[Java] JInternalFrame en desktop icoontjes

Pagina: 1
Acties:

  • Kapoen
  • Registratie: Mei 2002
  • Laatst online: 27-08 13:23
Ben bezig aan een klein test programma. Het moet een
simpele JWindow worden met desktop functionaliteiten.
Ik wil gewoon JInternalFrames kunnen toevoegen en die
verkleinen tot icoontjes (zoals op windows desktop dus).

De volgende code werkt al (is niet echt mooi geprogrammeerd,
maar zoals ik al zei, 't is slechts een test proggy)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
public class myDesktop {

    private int hoogte, breedte;
    private JWindow venster;
    
    private Container c, cI;
    private Toolkit t;
    
    private JDesktopPane l;
    
    private JInternalFrame i;
    
    // default constructor - full screen desktop
    public myDesktop() {
        venster = new JWindow();
        t = Toolkit.getDefaultToolkit();
        c = venster.getContentPane();
        
        l = new JDesktopPane();
        c.add(l);
        venster.setContentPane(c);
        
        c.setLayout(null);
                     
        hoogte = (int) (t.getScreenSize().getHeight());
        breedte = (int) (t.getScreenSize().getWidth());
        
        venster.setSize(breedte, hoogte);
        venster.setVisible(true);
                
        i = new JInternalFrame("Test", true, true, true, true);
        cI = i.getContentPane();
        c.add(i);
        
        i.setSize(200, 100); 
        i.setLocation(10, 10);
        i.setVisible(true);
        i.setIconifiable(true);
        
        try {
            i.setIcon(true);
        } catch (Exception f) {
            System.out.println("kan venster niet verkleinen");
        } 
        
       cI.setLayout(null);
    
    }
...


Het resultaat van deze code is dat mijn internal frame
vliegensvlug verdwijnt. Heel logisch aangezien ik nog
geen icoontje heb ingesteld. Hoe doe ik dat juist?

Uit de Java API manual
public static class JInternalFrame.JDesktopIcon
extends JComponent
implements Accessible

This component represents an iconified version of a JInternalFrame. This API should NOT BE USED by Swing applications, as it will go away in future versions of Swing as its functionality is moved into JInternalFrame.
Echter in de API van JInternalFrame vind ik niets bruikbaars, die verwijst
weer naar de JDesktopIcon documentatie. Hoe moet ik dat icoontje dan
wel instellen?

Clowns to the left of me, Jokers to the right


  • CyBoB
  • Registratie: Januari 2001
  • Laatst online: 24-12-2025

CyBoB

.::BURB::.

Misschien werkt hij zo beter :?
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
public class myDesktop {

    private int hoogte, breedte;
    private JWindow venster;

    private Container c, cI;
    private Toolkit t;

    private JDesktopPane l;

    private JInternalFrame i;

    // default constructor - full screen desktop
    public myDesktop() {
        venster = new JWindow();
        t = Toolkit.getDefaultToolkit();

        l = new JDesktopPane();
        venster.setContentPane(l);

        hoogte = (int) (t.getScreenSize().getHeight());
        breedte = (int) (t.getScreenSize().getWidth());

        venster.setSize(breedte, hoogte);
        venster.setVisible(true);

        i = new JInternalFrame("Test", true, true, true, true);

        l.add(i);

        i.setSize(200, 100);
        i.setLocation(100, 100);
        i.setVisible(true);
        i.setIconifiable(true);

        try {
            i.setIcon(true);
        } catch (Exception f) {
            System.out.println("kan venster niet verkleinen");
        }

    }
    public static void main(String[] arg){
        new myDesktop();
    }
}


tip, gebruik wat duidelijkere namen voor je objecten. het is een beetje moeilijk volgen zo :'(.

ook al is het maar een test

[ Voor 7% gewijzigd door CyBoB op 17-12-2002 17:28 ]


  • Kapoen
  • Registratie: Mei 2002
  • Laatst online: 27-08 13:23
wat heb je nu precies veranderd?

Die main methode heb ik ook, in een andere klasse :)
Dat was trouwens ook geen probleem :D

Clowns to the left of me, Jokers to the right


  • CyBoB
  • Registratie: Januari 2001
  • Laatst online: 24-12-2025

CyBoB

.::BURB::.

Kapoen schreef op 17 december 2002 @ 20:03:
wat heb je nu precies veranderd?
kwestie van vergelijken :p

maar ten eerste doe je enkele keren setLayout(null) (ik zou niet weten waarom), maar op deze manier verwijder je huidige layoutmanager en snapt de JDesktopPane er niks meer van en tekend dus ook niks meer (Dus ook niet je Internal frames).

ten tweede kan je dat JDesktopPane gewoon als de contentpane zetten. JDesktopPane is een speciale JLayeredPane die geschikt is als contentpane. ik hoop dat ik het zo een beetje goed beredeneer :?

<edit>
oh en van die main methode was mijn fout. was hem vergeten uit de code te verwijderen :) en had er verder geen bedoelingen mee

[ Voor 11% gewijzigd door CyBoB op 17-12-2002 21:39 ]


  • reskobon
  • Registratie: November 2001
  • Laatst online: 14-08 22:26
Door deze regel in je constructor:

Java:
1
2
3
4
5
6
try { 
   i.setIcon(true); 
} 
catch (Exception f) { 
   System.out.println("kan venster niet verkleinen"); 
} 


Laat je hem toch meteen bij het verschijnen weer verdwijnen :?

[ Voor 16% gewijzigd door reskobon op 17-12-2002 23:43 ]

Leeg


  • Kapoen
  • Registratie: Mei 2002
  • Laatst online: 27-08 13:23
Laat je hem toch meteen bij het verschijnen weer verdwijnen
Daar heb je 100% gelijk in, echter uit mijn eerste post:
Het resultaat van deze code is dat mijn internal frame
vliegensvlug verdwijnt. Heel logisch aangezien ik nog
geen icoontje heb ingesteld. Hoe doe ik dat juist?
ik heb ondertussen nog wat gekeken in de java API doc en ben
er nog steeds niet uitgekomen, daarom zal ik dus wel gebruik
moeten maken van JPanel met bijhorend gif icoontje en een
mouselistener of zo. Wel spijtig vind ik, het zit allemaal reeds
leuk verpakt in de klasse JInternalFrame, alleen is de documentatie
niet 100% duidelijk hierover. Misschien lees ik het verkeerd,
of snap ik dat hele java gedoe nog niet goed :)

Nuja, bedankt voor de hulp mensen :D

Clowns to the left of me, Jokers to the right

Pagina: 1