[Java] 3 panels onder elkaar

Pagina: 1
Acties:

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Ben nogal nieuw met Java, helemaal mat het maken van een goede layout.

Ik heb een frame waarin 3 panels moeten. In deze panels komen een aantal controls. Maar nou moeten deze 3 panels onder elkaar en boven zijn uitgelijnd. In Delphi zou het simpel zijn (alle 3 Align := alTop):

Afbeeldingslocatie: http://httpd.chello.nl/~j.vos6/zooi/panels.png

Maar hoe krijg ik dit in Java voor elkaar? Alvast bedankt.

[ Voor 4% gewijzigd door jelmervos op 13-11-2003 11:34 ]

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • Dash2in1
  • Registratie: November 2001
  • Laatst online: 19-08 23:13
Mjah, er zijn meerdere wegen die naar Rome leiden denk ik zo..
Als ik jou was zou ik eens kijken naar de TableLayout, deze zit niet standaard in de JRE. Je zou dan, als je de panels op vaste hoogte wilt hebben, zoiets als volgende kunnen doen:

In een subklasse van JFrame:
Java:
1
2
3
4
5
6
7
8
9
double[] widths = new double[]{TableLayout.FILL};
double[] heights = new double[]{TableLayout.PREFERRED, TableLayout.PREFERRED, 
                                TableLayout.PREFERRED, TableLayout.FILL}
TableLayout layout = new TableLayout(new double[][]{widths, heights});

this.setLayout(layout);
this.getContentPane().add(panel1, "0,0");
this.getContentPane().add(panel2, "0,1");
this.getContentPane().add(panel3, "0,2")


edit:

foutje weggehaald

[ Voor 13% gewijzigd door Dash2in1 op 13-11-2003 12:18 ]


  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

http://java.sun.com/docs/...wing/overview/layout.html

Complete uitleg van layoutmanagerment in Java icm Swing.

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


  • nxt
  • Registratie: November 2001
  • Laatst online: 12-06 10:00

nxt

Delphi schreef op 13 november 2003 @ 11:33:
Maar hoe krijg ik dit in Java voor elkaar? Alvast bedankt.
Borland heeft een VerticalFlowLayout en die doet wat je wilt
als je een versie van JBuilder download zit ie erbij inclusief source code.

  • JeroenTheStig
  • Registratie: Mei 2000
  • Laatst online: 14:17
kijk eens op www.jgoodies.com. Hier staan ook leuke handige tools om snel en eenvoudig je layout te maken. FormLayout is hierbij een heel handige layout om je layout zo te maken zoals jij het wilt.

  • esf
  • Registratie: Juni 2002
  • Laatst online: 11-03 14:06

esf

Als dit het eindresultaat moet zijn, is volgens mij een GridLayout met hoogte 6, breedte 1 genoeg als je drie elementen er aan toevoegt..
Als er nog andere dingen onder moeten een GridLayout van 2 bij 1 en aan de bovenkant daarin een GridLayout van 3 bij 1.
Het voordeel van deze layouts is dat Java het resizen zelf regelt en dat je daar niet over na hoeft te denken bij het programmeren.

Ik weet niet wat de VerticalFlowLayout doet die nxt adviseerde, maar een standaard FlowLayout, verticaal georienteerd (zie constructor) doet niet wat je wilt, omdat je dan drie knopjes onder elkaar ziet, maar dan niet uitgevuld zoals jij in je plaatje hebt staan.

offtopic:
Wel grappig om te zien wat voor verschillende layouts iedereen adviseert. Het zal allemaal vast wel werken, maar toch heeft iedereen een totaal andere oplossing ;)

[ Voor 92% gewijzigd door esf op 13-11-2003 20:19 ]

The hardest thing in the world to understand is the income tax. - Albert Einstein


  • JeroenTheStig
  • Registratie: Mei 2000
  • Laatst online: 14:17
FormLayout is voor dit probleem een beetje overkill misschien, maar het is zeker een aanradertje voor het bouwen van GUI's

  • Dash2in1
  • Registratie: November 2001
  • Laatst online: 19-08 23:13
GridBagLayout zou ik sowieso niet gebruiken. Je kan in principe precies hetzelfde met de TableLayout, alleen die is (vind ik) een heel stuk simpeler in het gebruik.

  • esf
  • Registratie: Juni 2002
  • Laatst online: 11-03 14:06

esf

Zoals je al zei, TableLayout zit niet standaard in JRE en als het kan met klassen die daar wel in zitten, zou ik dat gebruiken

Ik had het trouwens over een GridLayout, niet over een GridBagLayout, maar dat maakt niet uit.. Waarom zou je die sowieso niet gebruiken? Hij doet toch precies wat je hier wilt.. het Frame opdelen in een aantal gelijke stukken en daarin knoppen stoppen..

[ Voor 51% gewijzigd door esf op 14-11-2003 10:11 ]

The hardest thing in the world to understand is the income tax. - Albert Einstein


  • Dash2in1
  • Registratie: November 2001
  • Laatst online: 19-08 23:13
Zoals je al zei, TableLayout zit niet standaard in JRE en als het kan met klassen die daar wel in zitten, zou ik dat gebruiken
Dat is je eigen keuze natuurlijk. De reden dat ik liever de TableLayout gebruik, is dat ik de GridBagLayout onnodig gecompliceerd vind en de TableLayout precies hetzelfde kan. (Overigens is de TableLayout gewoon te krijgen van http://java.sun.com )
Ik had het trouwens over een GridLayout, niet over een GridBagLayout, maar dat maakt niet uit.. Waarom zou je die sowieso niet gebruiken? Hij doet toch precies wat je hier wilt.. het Frame opdelen in een aantal gelijke stukken en daarin knoppen stoppen..
Sorry, ik had iets te snel gelezen. De GridLayout is inderdaad best toepasbaar, maar dan zou je 3 extra Componenten moeten toevoegen aan de onderste 3 delen. Of 2 Panels gebruiken, en op het 1e panel de knoppen toevoegen met weer een GridLayout. Dat lijkt me nogal wat omslachtig.

[ Voor 5% gewijzigd door Dash2in1 op 14-11-2003 12:07 ]


  • Robtimus
  • Registratie: November 2002
  • Laatst online: 14:03

Robtimus

me Robtimus no like you

Het nadeel van een gridlayout is dat ELKE cel ervan even groot is. Dit is niet altijd gewenst.

More than meets the eye
There is no I in TEAM... but there is ME
system specs


Verwijderd

De oplossing met 2 panels is een Grid(Bag)Layout is toch wel de mooiste, je groepeert daarmee automatisch de 3 buttons, wat weer handig kan zijn in het afhandelen van events en het hergebruik van de 3 buttons. Bovendien hoef je niet moielijk te doen met speciale LayOutManagers die je dan weer mee moet nemen in je totale pakket

  • JeroenTheStig
  • Registratie: Mei 2000
  • Laatst online: 14:17
IceManX schreef op 14 november 2003 @ 12:18:
Het nadeel van een gridlayout is dat ELKE cel ervan even groot is. Dit is niet altijd gewenst.
Vandaar dat ik meestal FormLayout gebruik, hierbij kun je je eigen 'grid' maken waarbij je zelf bepaalt hoe groot een bepaalde cel is.
Pagina: 1