Vaag java probleem

Pagina: 1
Acties:

  • Theodoor
  • Registratie: Juni 1999
  • Laatst online: 17-03 10:50
Als ik een GUI in java schrijf, en ik compileer het, dan is de layout steeds heel anders. Bovendien verschijnen de componenten soms wel allemaal en soms ontbreken er een aantal. Hoe komt dit? Volgens mij zou het goed moeten werken.

BTW: ik gebruik gewoon een flowlayout.

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Tja, hier kunnen we natuurlijk niet zoveel mee... Wat is er anders? Code? Shots?

LayoutManagers zijn bedoeld voor het aanpassen van de GUI indeling aan grootte aan de behoefte van de componenten: als een component meer ruimte wil kan je met LayoutManagers ervoor zorgen dat hij dat ook kan krijgen. Wellicht is je content steeds anders?

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Theodoor
  • Registratie: Juni 1999
  • Laatst online: 17-03 10:50
Het eerste probleem is dat ik een JButton plaats, maar dat die niet op het scherm komt. Terwijl mijn JFrame wel voldoende ruimte biedt.

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Tja, ik denk dat je dan toch iets niet goed doet... Als het een bug was geweest was hij al enkele Java versies eerder gevonden ;) .

Laat eens wat code zien waar het mis gaat (selectief aub ;) ).

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • MisterData
  • Registratie: September 2001
  • Laatst online: 07-09 20:23
Ik geloof zelfs dat een JFrame een BorderLayout als standaardlayout heeft :)

maar ik weet het niet zeker

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
idd (althans, het ContentPane van een JFrame ;) ).
The default content pane will have a BorderLayout manager set on it.
Verwarrend is dit:
The default layout manager for a panel is the FlowLayout layout manager.
Je kan dus maar beter altijd even een expliciet een LayoutManager meegeven.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Theodoor
  • Registratie: Juni 1999
  • Laatst online: 17-03 10:50
Ik kan nu het probleem wat beter definiëren. Het is zeker geen bug in java. Het probleem is dat als een applicatie opstart, dat dan niet alle componenten op het scherm komen, terwijl er wel voldoende plaats voor is. Als ik het Frame van grootte verander, dan komen wel alle componenten op het scherm. Een plaatje volgt.

  • MisterData
  • Registratie: September 2001
  • Laatst online: 07-09 20:23
Een JFrame (eigenlijk het JLayeredPane) bevat geen Panelen , alleen maar Containers geloof ik :)

  • Theodoor
  • Registratie: Juni 1999
  • Laatst online: 17-03 10:50
Dit gebruik ik:
cp = f.getContentPane();
cp.setLayout(new FlowLayout());
Een moment voor het plaatje. De verbinding naar mijn webspace is niet helemaal lekker.

  • MisterData
  • Registratie: September 2001
  • Laatst online: 07-09 20:23
Op donderdag 10 januari 2002 21:59 schreef Theodoor het volgende:
Ik kan nu het probleem wat beter definiëren. Het is zeker geen bug in java. Het probleem is dat als een applicatie opstart, dat dan niet alle componenten op het scherm komen, terwijl er wel voldoende plaats voor is. Als ik het Frame van grootte verander, dan komen wel alle componenten op het scherm. Een plaatje volgt.
Misschien heb je setVisible() gedaan voordat je componenten (of een paar) ging add()en. Dan moet je iets van update() ofzo aanroepen. Of de volgorde veranderen van je aanroepen voor het adden van die componenten.

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Theodoor: Het probleem is dat als een applicatie opstart, dat dan niet alle componenten op het scherm komen, terwijl er wel voldoende plaats voor is.
Aha... dan zijn er twee mogelijkheden:

1. Je gebruikt niet 'pack' om de grootte van het frame aan te passen aan de wensen van de componenten (preferred size).

2. Je gebruikt de LayoutManagers niet goed (maar dat lijkt mij sterk omdat ze later wel zichtbaar worden).

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Theodoor
  • Registratie: Juni 1999
  • Laatst online: 17-03 10:50
Roep je pack zo aan: pack();?

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Theodoor: Roep je pack zo aan: pack();?
Yep :)

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Theodoor
  • Registratie: Juni 1999
  • Laatst online: 17-03 10:50
Hartstikke bedankt. Het werkt. Toch vind ik het raar. Ik had de setSize methode op het frame-object aangeroepen met waarden die veel groter waren dan waar pack nu mee komt...

Dus met andere woorden: mbv van de setSize-methode heb ik een veel groter frame gemaakt dan dat er nu komt (en ik die setSize-methode niet gebruik) en toen verschenen niet alle componenten...

  • Theodoor
  • Registratie: Juni 1999
  • Laatst online: 17-03 10:50
Waarom is dit zo? Waarom werkt die SetSize methode niet?

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Theodoor: Ik had de setSize methode op het frame-object aangeroepen met waarden die veel groter waren dan waar pack nu mee komt...
Hum... dat klinkt wel vreemd ja. Ik zou zo ook niet weten wat daar de oorzaak van is.

Maar het is sowieso altijd beter om pack te gebruiken natuurlijk :) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment

Pagina: 1