[java] jInternalFrame size probleem

Pagina: 1
Acties:

  • Thyzz
  • Registratie: September 2001
  • Laatst online: 18-08 11:30

Thyzz

-=leeg=-

Topicstarter
Ik heb een probleem met de internalFrame size. Maar ik zal eerst effe de situatie schetsen.

een JDesktopPane met daarin een menu
en een JInternalFrame

je krijgt dan de volgende lagen onderelkaar
Afbeeldingslocatie: http://www.tweakers.net/ext/f/6260/full.jpg
dus eerst het windows frame, dan de menubalk, en dan het internalframe.

Nu is het probleem dat ik onderaan het internalFrame een aantal knoppen heb staan. Als ik het internalFrame maximize dan verdwijnen die knoppen buiten beeld.

Dit omdat de maximale grote opgegeven door (Toolkit.getDefaultToolkit().getScreenSize()) de volledige desktopgrote weergeeft. en niet de internal grote van het JdesktopPane.

Hoe kan ik de interne grote van JDesktopPane krijgen (excl. dus het windows frame en de menubalk)

5325wp


  • SWfreak
  • Registratie: Juni 2001
  • Niet online
hier stond onzin...sorry

[ Voor 90% gewijzigd door SWfreak op 02-06-2003 20:28 ]


  • Jelmer
  • Registratie: Maart 2000
  • Laatst online: 23:54
Een LayoutManager doet dat toch al automatisch voor je, knoppen op de juiste plek houden?

Oh, en om je vraag te beantwoorden: Use the API docs, luke! JDesktopPane is een Component en je kunt dus gewoon getSize() doen...

[ Voor 43% gewijzigd door Jelmer op 02-06-2003 20:53 ]


  • Thyzz
  • Registratie: September 2001
  • Laatst online: 18-08 11:30

Thyzz

-=leeg=-

Topicstarter
jah maar de uiterste waarde van desktopPane zijn 1024,768 (schermresolutie) maar als je die als waarde meegeeft aan Internalframe dan mis je een stuk omdat het internalFrame binnen de menubalk en Frameborder valt

Dit staat er nu dus in de desktop:

Java:
1
2
3
4
5
6
 void menuProductAutoToevoegen_actionPerformed(ActionEvent e) {
    JInternalFrame PGSInternalFrameAddCar = new PGSInternalFrameAddCar();
    pgsDesktop.add(PGSInternalFrameAddCar);
    PGSInternalFrameAddCar.setMaximumSize(this.getSize());
    PGSInternalFrameAddCar.show();
  }

[ Voor 46% gewijzigd door Thyzz op 02-06-2003 21:02 ]

5325wp


  • Jelmer
  • Registratie: Maart 2000
  • Laatst online: 23:54
Zover ik weet hoef je geen max size op te geven hoor :? Als je niks opgeeft zoekt ie het als ik me niet vergis zelf uit (lees: toen ik een framework heb gemaakt (een jaar geleden ofzo) heb ik er zover ik me kan herinneren niks voor hoeven doen). Als je wil dat het panel gemaximized is bij het openen van het venster kun je setMaximum(bool) gebruiken. (true voor max, false voor normaal).

  • Thyzz
  • Registratie: September 2001
  • Laatst online: 18-08 11:30

Thyzz

-=leeg=-

Topicstarter
hier nog 2 screens ter verduidelijking

De situatie als het internalframe niet is maximized
Afbeeldingslocatie: http://www.tweakers.net/ext/f/6263/thumb.jpg

hier de situatie als het internalframe wel maximized is
Afbeeldingslocatie: http://www.tweakers.net/ext/f/6264/thumb.jpg

zoals je ziet mis ik de onderste rij knoppen

5325wp


  • Jelmer
  • Registratie: Maart 2000
  • Laatst online: 23:54
Maar haal PGSInternalFrameAddCar.setMaximumSize(this.getSize()); nou s weg.
Dit is de code die ik destijds gebruikt heb en die werkt prima:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    public MDIChild(String title)
    {
        super(title,
              true, //resizable
              true, //closable
              true, //maximizable
              true);//iconifiable
        setSize(500, 350);
        setPreferredSize(new java.awt.Dimension(500, 350));
        setMinimumSize(new java.awt.Dimension(500, 350));
        formControlPanel = new FormControlPanel(this);

        getContentPane().add(formControlPanel, java.awt.BorderLayout.SOUTH);

        layout = new MDIChildLayout();
        pnlContent = new JPanel(layout);
        getContentPane().add(pnlContent, java.awt.BorderLayout.CENTER);

        show();
    }


De layoutmanager die op het contentpane zit is trouwens een afgeleide van CardLayout, maar dat doet verder niet terzake.

[ Voor 4% gewijzigd door Jelmer op 02-06-2003 23:59 ]


  • Eelke Spaak
  • Registratie: Juni 2001
  • Laatst online: 16-08 19:14

Eelke Spaak

- Vlad -

Ik ben niet zo heel erg 'into Java' meer, maar volgens mij kan je gewoon met
Java:
1
Dimension d = getContentPane().getSize();

de grootte van het internal panel krijgen.

TheStreme - Share anything with anyone


  • Thyzz
  • Registratie: September 2001
  • Laatst online: 18-08 11:30

Thyzz

-=leeg=-

Topicstarter
om te testen doe ik dan:

Java:
1
System.out.println(getContentPane().getSize());


en dan krijg ik terug
code:
1
java.awt.Dimension[width=0,height=0]


helaas dus :S
Jelmer schreef op 02 June 2003 @ 23:58:
Maar haal PGSInternalFrameAddCar.setMaximumSize(this.getSize()); nou s weg.
Dit is de code die ik destijds gebruikt heb en die werkt prima:
Java:
1
...


De layoutmanager die op het contentpane zit is trouwens een afgeleide van CardLayout, maar dat doet verder niet terzake.
Maar als ik dit doe werkt het ook niet.

5325wp


  • momania
  • Registratie: Mei 2000
  • Laatst online: 22:52

momania

iPhone 30! Bam!

Probeer het volgende eens te gebruiken:
http://java.sun.com/j2se/...swing/DesktopManager.html

Daarin heb je het volgende:
maximizeFrame
public void maximizeFrame(JInternalFrame f)
Generally, the frame should be resized to match it's parents bounds.
Misschien bied dat een oplossing omdat je dan het object waar je JInternalFrame zich aan aan moet passen hem laat maximizen.

Neem je whisky mee, is het te weinig... *zucht*


  • Thyzz
  • Registratie: September 2001
  • Laatst online: 18-08 11:30

Thyzz

-=leeg=-

Topicstarter
Ik ben er achter (denk ik), het DesktopPane moet je ergens een grote mee geven.
Die had ik altijd op 1024,768 staan (mijn schermresolutie). Echter daar had ik natuurlijk de Framebalk en de Menubalk vanaf moeten trekken.

Maar hoe kan ik die desktopPane dan wel de goed interne waarde mee geven dat hij precies binnen het contentPane blijft?

5325wp


  • momania
  • Registratie: Mei 2000
  • Laatst online: 22:52

momania

iPhone 30! Bam!

Crash_neo schreef op 04 June 2003 @ 00:00:
Ik ben er achter (denk ik), het DesktopPane moet je ergens een grote mee geven.
Die had ik altijd op 1024,768 staan (mijn schermresolutie). Echter daar had ik natuurlijk de Framebalk en de Menubalk vanaf moeten trekken.

Maar hoe kan ik die desktopPane dan wel de goed interne waarde mee geven dat hij precies binnen het contentPane blijft?
Had je de DesktopManager al geprobeerd dan?

Eentje aanmaken en die meegeven aan je JDesktopPane middels setDesktopManager en dan met die desktop manager je internal framepjes regelen

Neem je whisky mee, is het te weinig... *zucht*


  • Thyzz
  • Registratie: September 2001
  • Laatst online: 18-08 11:30

Thyzz

-=leeg=-

Topicstarter
nee, :(
want het is blijkbar al laat want ik zie evenbniet waar ik dit in moet zetten, in de Desktop of in het Internalframe


Maar als ik de bouds van het DesktopPane verklein naar BV: 800,600 en ik maximalizeer(met de oude code) dan werkt het wel, wat dus inmpliceert dat desktopPane te groot moet zijn geweest, maar hoe geef ik die nou de juiste grote mee?

5325wp


  • momania
  • Registratie: Mei 2000
  • Laatst online: 22:52

momania

iPhone 30! Bam!

Crash_neo schreef op 04 June 2003 @ 00:18:
nee, :(
want het is blijkbar al laat want ik zie evenbniet waar ik dit in moet zetten, in de Desktop of in het Internalframe


Maar als ik de bouds van het DesktopPane verklein naar BV: 800,600 en ik maximalizeer(met de oude code) dan werkt het wel, wat dus inmpliceert dat desktopPane te groot moet zijn geweest, maar hoe geef ik die nou de juiste grote mee?
Het is al laat ja en dat is te zien aan je typos :P

Volgens mij moet je, als je een JInternalFrame wil maximizen, eens proberen om alles zonder sizes aan te maken en kijken hoe dat uitpakt.

Dan vervolgens via iets van :

getDesktopPane().getDesktopManager().maximizeFrame(JInternalFrame f) ;

je frame maximizen.

Dan zou het JInternalFrame zich moet en aanpassen aan de grootte van je JDesktopPane z'n default waardes en dat zijn dan de waardes zoals ie op het scherm staat.

als je d'r vanacht nog niet uit bent, zal ik het morgen op m'n werk even proberen en het practisch mee uit te zoeken

Neem je whisky mee, is het te weinig... *zucht*


  • Thyzz
  • Registratie: September 2001
  • Laatst online: 18-08 11:30

Thyzz

-=leeg=-

Topicstarter
okee ik heb dat stukje met die
Java:
1
getDesktopPane().getDesktopManager().maximizeFrame(JInternalFrame f) ;

aan de praat,
echter die neemt maximaal de grote van de jDesktopPane aan.
Dus als ik die geen setSize(); mee geef dan komt er dus helemaal geen JInternalFrame meer op mijn scherm

5325wp


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Ik heb niet alles doorgelezen. Maar ik plak een desktoppane altijd op de CENTER van de borderlayout. En daarna kan ik schermen maximizen met setMaximum. Hierdoor hoef ik nooit size code ed mee te geven, laat de layoutmanager/swing dat maar regelen.

en lees verder dit topic maar eens:
http://forum.javahova.net/topic.php?id=961
Pagina: 1