Problem mit GridBagLayout plazierung?!?!
-
Hallo zusammen
Ich habe ein Dialog erstellt auf dem Ich ein Panel plaziert habe.
Dieses Panel hat nun als LayoutManager GridBayLayout. Ich habe es auch einwandfrei geschaft die Elemente auf dem Panel zu plazieren wie ich es will.Mein Problem ist es nun, dass die Plazierung der Elemente in der Mitte des Panels beginnt und nicht links oben wo ich das habewn will.
Leider bietet mit jetzt die Klasse GridBagLayout nicht die möglichkeit dies explizit anzugeben oder ich kenne nicht die Methode die dies realisiert.
Freue mich über jede Datenbank.
Bye
-
Ehm, weiß jetzt nicht 100%ig was du meinst, da ich kein Bild vor mir habe. Aber lege doch mal dein Gridbag-Panel in ein anderes Panel rein, welches widerrum das Gridbag-Panel links oben positioniert... Bei den ganzen Layout-Managern muß man öffters mal Panels in Panels verschachteln, damit am Ende das raus kommt was man haben will.
-
Dickes *lol* an dich CoTech
Antwort:
GridBagConstraints cons = new GridBagConstraints();
cons.anchor = GridBagConstraints.WEST;So viel zu benutze LayoutManager ... Siehe Beitrag JComboBox & pack();
Ich nehme alles zurück, wenn du mir ne Lösung gibst (und zwar nicht:
parse längstes Element -> setze JComboBox auf längstes Element -> pack(); -> setze erstes Eelemnt).MFG John
-
Ja ein Dickes LOL
Da du ja soviel Ahnung hast, kannst du mir bestimtm dann weiter helfen.
ICh poste mal den kompleten code.
cons.anchor = GridBagConstraints.WEST;Hab ich auch eingefügt aber anscheinend klappt das nicht bei mir.
/* * Created on 19.04.2005 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ package de.tokcom.projekt.pizza.view; import java.awt.GridLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.ImageIcon; import java.awt.GridBagLayout; import javax.swing.JLabel; import java.awt.GridBagConstraints; import javax.swing.JTextField; public class NewFrameTest extends JFrame { private javax.swing.JPanel jContentPane = null; private JLabel jLabel = null; private JTextField jTextField = null; /** * This is the default constructor */ public NewFrameTest() { super(); initialize(); } /** * This method initializes jTextField * * @return javax.swing.JTextField */ private JTextField getJTextField() { if (jTextField == null) { jTextField = new JTextField(); } return jTextField; } public static void main(String[] args) { NewFrameTest frame = new NewFrameTest(); frame.setVisible(true); } /** * This method initializes this * * @return void */ private void initialize() { this.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE); this.setSize(478, 343); this.setContentPane(getJContentPane()); this.setTitle("JFrame"); } /** * This method initializes jContentPane * * @return javax.swing.JPanel */ private javax.swing.JPanel getJContentPane() { if (jContentPane == null) { jLabel = new JLabel(); GridBagConstraints gridBagConstraints1 = new GridBagConstraints(); GridBagConstraints gridBagConstraints2 = new GridBagConstraints(); jContentPane = new javax.swing.JPanel(); jContentPane.setLayout(new GridBagLayout()); gridBagConstraints1.gridx = 0; gridBagConstraints1.gridy = 0; gridBagConstraints1.anchor = java.awt.GridBagConstraints.NORTHWEST; jLabel.setText("JLabel"); gridBagConstraints2.gridx = 1; gridBagConstraints2.gridy = 0; gridBagConstraints2.weightx = 1.0; gridBagConstraints2.fill = java.awt.GridBagConstraints.HORIZONTAL; jContentPane.add(jLabel, gridBagConstraints1); jContentPane.add(getJTextField(), gridBagConstraints2); } return jContentPane; } } // @jve:decl-index=0:visual-constraint="10,10"
-
Also mit freundlichen Grüßen ein lol zurück
//import static java.awt.GridBagConstraints.*; GridBagConstraints cons = new GridBagConstraints(); JPanel spaceKiller = new JPanel; cons.weightx = 1; cons.weighty = 1; cons.fill = BOTH; cons.gridwidth = REMAINDER; gridBagConstraints1.weightx = 0; //wenn es nur die Labelgröße haben soll gridBagConstraints2.gridwidth = GridBagConstraints.REMAINDER; ... jContentPane.add(spaceKiller, cons);
Ich hoffe ich konnte dir helfen ... Hatte deine Frage erst falsch verstanden.
Wenn du jetzt noch ne Antwort für mich hast ...
-
HI John
Also jetzt weis ich gar nicht ob deine Lösung auch funktionoiert.
Ich habe es anders hinbekomme, und zwar das ich auf den RootPane ein Panel setze und der vom RootPane aus als BorderLayout. Auf dieses Pane plaziere ich nun die Elemente die ich will als GridBagLayout.
Das ich so ungefähr oder besser gesagt das was Artchi vorgeschlagen hat.
Ich danke euch allen vielmals.
Und frohes schaffen.
bye