Wie kann ich mehrere Layouts in einem Frame oder Panel anwenden?

Code46

Erfahrenes Mitglied
Hallo brauche dringende hilfe.
Ich versuche ein programm zu schreiben, wo ich GridLayout,BorderLayout und BoxLayout in einem Frame benutzen muss. Ich habe in einem Frame einen JMenuBar wo ich das BorderLayout benutze nun will ich darunter JTextField und Buttons hinzufügen jedoch will ich das GridLayout benutz wisst wir ich das machen kann ********
 
Moin,

Ich versuche ein programm zu schreiben, wo ich GridLayout,BorderLayout und BoxLayout in einem Frame benutzen muss. Ich habe in einem Frame einen JMenuBar wo ich das BorderLayout benutze nun will ich darunter JTextField und Buttons hinzufügen jedoch will ich das GridLayout benutz wisst wir ich das machen kann ********

verstehe ich das richtig?
Du willst EINER Komponente mehrere Layouts gleichzeitig zuweisen :confused:
Da wird IMHO nicht gehen ....

Du könntest aber bspw. dem Frame ein BorderLayout zuweisen und dann in die einzelnen Bereiche (Nord, Süd usw.) neue Komponenten mit dann eigenen Layouts legen!

Gruß
KLaus
 
Hi,

ich glaube, ich weiß was du meinst. Um dein Ergebnis zu erreichen, musste verschiedene Layouts ineinander verschachteln. Mit einem Pane oder nur einem Panel wird es nicht gehen.

Du könntest das so lösen:

Code:
JFrame frm = new JFrame();                                     // neues Frame
frm.setPreferredSize(new Dimension(300,300));          // eine Größe zuweisen
frm.setLayout(new BorderLayout());                         // jetzt vorerts zum Beispiel ein BorderLayout
frm.setVisible(true);

Dann legst du dir zum Beispiel ein neues Panel an

Code:
JPanel mainPanel = new JPanle                                     // neues Frame
mainPanel .setLayout(new GridLayout(0,2));                // GridLayout

Dieses kannst du jetzt dem ContantPane zu weisen

Code:
frm.add(mainBox, BorderLayout.CENTER);

Demnach liegt jetzt das GridLayout im CENTER des BorderLayouts

Und nun folgenden deine Boxen

Code:
Box subBox = Box.createHorizontalBox();
Box topBox = Box.createVerticalBox();
Box bottomBox = Box.createHorizontalBox(); 
//
// Diese können wieder ineinander verschatelt werden
subBox .add(topBox);    
subBox .add(bottomBox );

Du kannst dann diese Boxen entweder in eines der übriggebliebenen Borderayouts Positionen einbinden, als PAGE_START, LINE_END, usw. oder du kannst dies subBox jetzt in das GridLayout platzieren.

Gruß Marc
 
Zurück