[JAVA] Layoutmanagers

Pagina: 1
Acties:

  • Zynth
  • Registratie: September 2001
  • Laatst online: 29-07 15:30
Ik ben tegen een probleempie aangelopen waar tot nu toe geen tutorial me uit redt :)

Ik maak een venster, wat bestaat uit meerdere panels;
geen probleem! Ik wil deze panels in BorderLayout bij elkaar in het venster hebben, wat mij ook gelukt is.
Het probleem is, dat ik een van die panels ZELF ook een layout wil geven.
Ik wil namelijk dat een van die panels een verticale knoppenbalk wordt.

dit is dat paneltje waar het om gaat:
code:
1
2
3
4
5
        Panel p = new Panel();
        p.add(sendButton);
        p.add(resetButton);
        p.add(backButton);
        add(BorderLayout.EAST, p);

(die buttons zijn vooraf gedefinieerd knoppen.)
dat add(BorderLayout.EAST, p) plaatst panel p rechts in het venster.
Maar nu wil ik dus dat P ZELF een verticale knoppenbalk wordt,
dus niet net als nu de standaard FlowLayout.
een vereiste is wel, dat hoe erg je het venster ook vervormd,
de knoppen moeten even groot blijven als gewoon,
en hoe breed ik het venster ook maak,
de knoppenbalk moet een vastgestelde breedte hebben.
(mag dus niet mee vervormen)

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Als ik je goed begrijp ben je dus op zoek naar een bepaalde LayoutManager?

Je kunt een Panel met een GridLayout nemen voor je knoppen en dat Panel dan in een Panel met een FlowLayout stoppen (of een GridLayout)...

Veel makkelijker is mijn StackLayout :) . Deze staat hier al ergens op het forum (en is niet buggy ;) ). Zal even zoeken.

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


  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

kijk eens naar GridbagLayout en GridBagConstraints.

een erg krachtige maar ook ingewikkelde LayoutManager waarmee je het wel voor elkaar krijgt

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Hier staattie: [topic=201710/1/25] .

Als je het liever met de standaard layout managers wilt doen en je mijn omschrijving niet snapt hierboven moet ik het ff wat beter uitleggen ;) .

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


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
wasigh: kijk eens naar GridbagLayout en GridBagConstraints.
Oei, nog zo'n woord wat op JTextPane lijkt ;) .

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


  • Zynth
  • Registratie: September 2001
  • Laatst online: 29-07 15:30
ehm, tja het probleem is niet zozeer het vinden van een geschikte layoutmanager.
(alhoewel die stacklayout misschien wel handig zou zijn :))
maar het probleem is het implementeren van die layout op dat panel.
Dat lukt me namelijk niet, omdat panel p zelf ook al weer in een layoutmanager zit (van het window).
Ik heb dus geen idee hoe ik een layoutmanager op panel p moet toepassen.

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Heel simpel: Panel p = new Panel(new *Layout(...)). Voor * moet je uiteraard even een layout naam invullen en voor ... wat parameters. Zie de API docs van Panel :) .

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


  • Zynth
  • Registratie: September 2001
  • Laatst online: 29-07 15:30
hmz..
die StackLayout lijkt me wel wat :)
als ik die in dezelde dir gooi als de rest van mijn code,
werkt hij dan gewoon als standaard layoutmanager??
code:
1
Panel p = new Panel(new StackLayout(...));

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Als je even de package declaratie op de eerste regel weghaald wel :) . Verder is het gewoon een normale LayoutManager. Je kunt hem dus gewoon gebruiken als alle andere.

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


  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

het is lang geleden dat ik er wat mee gedaan heb... maarem was het niet
code:
1
2
3
JPanel t = new JPanel();
// leef je uit met het panel
t.getContentpane.setLayout(new Gridlayout(..));

Of natuurlijk in de contructor als dat kan...

geen layout kan ook nog door de layoutmanager op null te zetten. is 'ie gelijk weer een heeeééél klein btje sneller. (alsof dat wat uitmaakt...)

Localhost, sweet localhost


  • Zynth
  • Registratie: September 2001
  • Laatst online: 29-07 15:30
hmz..
..mbravenboer, hij werkt bestwel kewl :)
precies wat ik zocht :)

nog 1 dingetje;
hij zet de knoppen hélemaal tegen de linkerkant van het panel. Is het ook mogelijk om daar een paar pixels tussen te zetten? (een soort marge ofzo).
Nu staan de knoppen rechts namelijk pal tegen het tekstvak aan,
en dat ziet er niet echt netjes uit :)

maareh, thnx 4 StackLayout! ;)

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Zynth: hij werkt bestwel kewl :)
precies wat ik zocht :)
Mooi, ik heb het ook altijd een makkelijk layout gevonden. Hij heeft wel wat gebreken, maar die zijn in situaties waarin je deze wilt gebruiken vaak niet erg relevant :) .
Is het ook mogelijk om daar een paar pixels tussen te zetten? (een soort marge ofzo).
Hum, ik heb totaal geen rekening gehouden met gebruik in AWT (in Swing zet je er namelijk gewoon ff een border om heen) en dus is dit nu niet mogelijk...

Het is echter wel vrij eenvoudig te implementeren, dus als je het graag wilt kan ik wel ff verbouwen. Als je dat graag wilt, mag ik dan jouw GUI even om mee te testen?

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


  • Zynth
  • Registratie: September 2001
  • Laatst online: 29-07 15:30
Ik heb de zipfile ff naar je emailadres gestuurd.
(die ene die in je profiel staat)

het zou echtwel handig zijn als je zo'n bordertje eromheen kan bouwen...
zou wel erg handig zijn, ook voor de toekomst :)

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
(je hebt mail ;) ).

Ik heb even een hele snelle oplossing gemaakt:

Je kan op een BorderLayout de ruimte tussen de componenten aangeven. Daarom heb ik heel simpel even de BorderLayout van de Editor iets veranderd:
code:
1
2
public Editor(Window window){
     super(new BorderLayout(5,5));

Je krijgt nu een mooi randje ertussen :) . In principe is dit nog een nettere oplossing dan de StackLayout een border te geven, de meeste andere LayoutManagers ondersteunen dat namelijk ook niet.

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


  • Zynth
  • Registratie: September 2001
  • Laatst online: 29-07 15:30
werkt perfect!!

thnx!

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Zynth: werkt perfect!!, thnx!
Mooi, graag gedaan :) .

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


  • Bobco
  • Registratie: Januari 2001
  • Laatst online: 30-10-2023

Bobco

I used to dream about Verona.

Het probleem is al opgelost, maar ik wil nog even een andere LayoutManager noemen. eentje die ik wel gebruikt heb is de FormLayout van Hawkins Software. Werkt erg goed voor al je formulier-achtige dingen waarbij je vragen en antwoorden netjes uit wilt lijnen.

With the light in our eyes, it's hard to see.

Pagina: 1