Wie die align-Komponenten-center in der JPanel mit GridBagLayout?
Wenn ich versuche, richten Sie meine Komponente geht es entweder linken oder rechten Seite.
So, ich will nur die Lösung, um loszuwerden, dieses problem, und mir auch sagen, wie die Größe des panel 400 x 350 pixel.
Hier ist mein code....titleLabel
und ResultLabel
sollten ausgerichtet werden, in der Mitte
public TimeGui() {
layout = new GridBagLayout();
setSize(400, 350); //**Its not working**
setBackground(Color.LIGHT_GRAY);
setBorder(BorderFactory.createLineBorder(Color.BLACK));
setBorder(new TitledBorder(new EtchedBorder(), "Time Conversion") );
setLayout(layout);
layoutConstraints = new GridBagConstraints();
textField1 = new JTextField(10);
textField2 = new JTextField(10);
String[] names1 = {"Seconds", "Minutes", "Hours", "Days", "Weeks"};
comboBox1 = new JComboBox<>(names1);
comboBox2 = new JComboBox<>(names1);
titleLabel = new JLabel("Time Conversion Unit", JLabel.CENTER);
resultLabel = new JLabel("Result Label");
equalLabel = new JLabel("=");
convertButton = new JButton("Convert");
layoutConstraints.fill = GridBagConstraints.HORIZONTAL;
Insets inset = new Insets(10, 10, 10, 10);
layoutConstraints.anchor = GridBagConstraints.CENTER;
addComponent(titleLabel, 0, 0, 2, 2, inset ); //I tried (0,1,2,2)
addComponent(comboBox1, 3, 0, 2, 3, inset);
addComponent(comboBox2, 3, 2, 2, 3, inset);
addComponent(textField1, 6, 0, 1, 2, inset);
addComponent(equalLabel, 6, 1, 1, 2, inset);
addComponent(textField2, 6, 2, 1, 2, inset);
addComponent(resultLabel, 8, 1, 2, 1, inset);
addComponent(convertButton, 10, 0, 2, 2, inset);
}
private void addComponent(Component component, int row,
int column, int width, int height, Insets inset1) {
layoutConstraints.gridx = column;
layoutConstraints.gridy = row;
layoutConstraints.gridwidth = width;
layoutConstraints.gridheight = height;
layoutConstraints.insets = inset1;
layout.setConstraints(component, layoutConstraints);
add(component);
}
}
- In der Abwesenheit des Bildes, wäre es klug, wenn atleast können Sie eine SSCCE, so dass man atleast führen Sie es ohne jede Art von Ergänzung. Laden Sie einfach Ihr Bild an jedem Ort, wie imgur, dropbox oder 4shared. Jeder mit höheren Berechtigungen hinzufügen, dass auf Ihre Frage
- ok, Sag mir nur, wie die Größe des Fensters.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem mit der
gridwidth
und Ihrefill
Eigenschaften...Grundsätzlich alles was ich geändert wurde...
Könnten Sie spielen, um mit ein paar von den anderen.
Als für die Bestimmung der tatsächlichen Größe der Platte, das beste, was Sie tun können, ist das überschreiben der
getPreferredSize
Methode derTimeGui
...Welche "vorschlagen" zum übergeordneten container, welche Größe Sie möchten, um verlegt werden zu können. Nur denken Sie daran, dies ist ein optionaler Wert-und layout-Manager sind gut innerhalb es gibt Rechte, es zu ignorieren.
getPreferredSize
wie erwähnt, in die Unterseite meiner Antwort