GridLayout
-
Hallo,
kann mir jemand sagen ob man die Spaltenbreite bei einem GridLayout verändern kann und wenn ja wie?
Danke
-
Meines Wissens nach nicht. Wenn du variable Breiten willst, solltest du das GridBagLayout verwenden.
/Dirk
-
Ich versuche gerade zu verstehen wie das GridBagLayout arbeitet. Kann es sein das das ganz schön kompliziert ist. Ich verstehe absolut nicht wie man damit arbeitet.
Eigentlich will ich auf einem Panel nur folgendes anzeigen:
Label1 ComboBox1
Label2 ComboBox2
Label3 ComboBox3Wenn es geht sollen die ComboBoxen sich immer an die Fenstergrösse anpassen und die Labels nur so viel Platz einnehmen wie nötig.
Ich hoffe ihr versteht was ich meine.
-
Kann es sein das das ganz schön kompliziert ist
Nö
Für dein Layout solltest du ein GridBagLayout nehmen.
Befasse dich erstmal ausgiebig mit dem GridBagLayout. http://java.sun.com/docs/books/tutorial/uiswing/layout/gridbag.html
Mit Google findest du zig weitere Tutorials.Dass sich die ComboBoxes der Fenstergröße anpassen und die Labels nicht schaffst du ganz einfach mit der Variablen "fill" deiner GridBagConstraints Instanz.
flo
-
Ich komme einfach nicht drauf wie das gehen soll. Habe mir schon mehrere Anleitungen angeschaut aber ich bin wohl zu blöd. Hier mal ein Test. Die Sachen die ich schon ausprobiert habe, die aber keine Wirkung hatten, habe ich weg gelassen.
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class test extends JFrame { // Anfang Variablen String array[] = {"Test", "Test2", "Test3"}; JPanel panel = new JPanel(); JLabel Label1 = new JLabel("Label1"); JLabel Label2 = new JLabel("Label2"); JComboBox ComboBox1 = new JComboBox(array); JComboBox ComboBox2 = new JComboBox(array); // Ende Variablen public test (String title) { // Frame-Initialisierung super (title); addWindowListener(new WindowAdapter() { public void windowClosing (WindowEvent evt) {System.exit(0);}}); setSize(500, 500); Container cp = getContentPane(); cp.setLayout(new BorderLayout()); // Anfang Komponenten getContentPane().add(panel, BorderLayout.NORTH); GridBagLayout gbl = new GridBagLayout(); panel.setLayout(gbl); GridBagConstraints gbc = new GridBagConstraints(); gbc.insets = new Insets(5, 5, 5, 5); // Abstand zwischen den Zellen gbc.fill = GridBagConstraints.HORIZONTAL; // Macht die Komponente breit genug um die Zelle(n) auszufüllen gbc.gridx = 0; // Von Zelle 0,0 um 1,1 erweitern gbc.gridy = 0; gbc.gridwidth = 1; gbc.gridheight = 1; gbl.setConstraints(Label1, gbc); panel.add(Label1); gbc.gridx = 1; //Von Zelle 1,0 um 3,1 erweitern gbc.gridy = 0; gbc.gridwidth = 3; gbc.gridheight = 1; gbl.setConstraints(ComboBox1, gbc); panel.add(ComboBox1); gbc.gridx = 0; // Von Zelle 0,1 um 1,1 erweitern gbc.gridy = 1; gbc.gridwidth = 1; gbc.gridheight = 1; gbl.setConstraints(Label2, gbc); panel.add(Label2); gbc.gridx = 1; // Von Zelle 1,1 um 3,1 erweitern gbc.gridy = 1; gbc.gridwidth = 3; gbc.gridheight = 1; gbl.setConstraints(ComboBox2, gbc); panel.add(ComboBox2); // Ende Komponenten setVisible(true); } // Anfang Ereignisprozeduren // Ende Ereignisprozeduren public static void main (String[] args) { new test("test"); } }
-
Danke für eure Hilfe. Ich hatte gerade noch ein kleines Erfolgserlebnis. Es funktioniert jetzt. Und wehe es tritt doch noch ein Problem auf.....