Нужно немного GridbagLayout
руководство. См. Код ниже. Я хочу, чтобы кнопка 2 была в два раза шире, чем кнопки 1, 3 и 4. Однако все четыре на самом деле отображаются с одинаковой шириной. Очевидно, что-то не так, но я не могу понять, что.Ширина кнопки в GridBagLayout
Спасибо.
import java.awt.*;
import javax.swing.*;
public class GridbagLayoutTetst {
private static void createAndShowGUI() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 250);
JPanel panel = new JPanel();
GridBagLayout gridbag = new GridBagLayout();
GridBagConstraints c = new GridBagConstraints();
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 1.0;
panel.setLayout(gridbag);
JButton button0 = new JButton("Button 0");
c.gridwidth = GridBagConstraints.REMAINDER;
gridbag.setConstraints(button0, c);
panel.add(button0);
JButton button1 = new JButton("Button 1");
c.gridwidth = 1;
gridbag.setConstraints(button1, c);
panel.add(button1);
JButton button2 = new JButton("Button 2");
c.gridwidth = 2;
gridbag.setConstraints(button2, c);
panel.add(button2);
JButton button3 = new JButton("Button 3");
c.gridwidth = 1;
gridbag.setConstraints(button3, c);
panel.add(button3);
JButton button4 = new JButton("Button 4");
c.gridwidth = GridBagConstraints.REMAINDER;
gridbag.setConstraints(button4, c);
panel.add(button4);
frame.add(panel);
frame.setVisible(true);
}
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(
"com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"
);
} catch (Exception exc) {
//
}
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
createAndShowGUI();
}
});
}
}
'c.gridwidth' определяет, сколько столбцов используется компонентом. Вы хотите изменить это? Думаю, вы хотите использовать 'c.weightx' ..? – MalaKa