Я хочу, чтобы первый ряд из трех компонентов был разнесен с весами 1,0,5,0,5. Поэтому первый компонент должен быть в два раза длиннее остальных. Во второй строке я хочу, чтобы все три компонента имели вес 0,5 (одинаковая длина). GridBagLayout
ведет себя странно.GridBagLayout не меняется для каждой строки
public class Main extends JFrame{
public Main() {
super();
this.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.fill = GridBagConstraints.HORIZONTAL;
JLabel label = new JLabel("Label 1");
c.weightx = 1.0;
c.gridx = 0;
c.gridy = 0;
label.setBorder(BorderFactory.createLineBorder(Color.red));
this.add(label, c);
JLabel label2= new JLabel("Label 2");
c.weightx = 0.5;
c.gridx = 1;
c.gridy = 0;
label2.setBorder(BorderFactory.createLineBorder(Color.red));
this.add(label2, c);
JLabel label3= new JLabel("Label 3");
c.weightx = 0.5;
c.gridx = 2;
c.gridy = 0;
label3.setBorder(BorderFactory.createLineBorder(Color.red));
this.add(label3, c);
JLabel label4 = new JLabel("1");
c.weightx = 0.5;
c.gridx = 0;
c.gridy = 1;
label4.setBorder(BorderFactory.createLineBorder(Color.red));
this.add(label4, c);
JLabel label5= new JLabel("2");
c.weightx = 0.5;
c.gridx = 1;
c.gridy = 1;
label5.setBorder(BorderFactory.createLineBorder(Color.red));
this.add(label5, c);
JLabel label6= new JLabel("3");
c.weightx = 0.5;
c.gridx = 2;
c.gridy = 1;
label6.setBorder(BorderFactory.createLineBorder(Color.red));
this.add(label6, c);
this.setSize(900,900);
this.setVisible(true);
}
public static void main(String[] args){
new Main();
}
}
GridBagLayout может быть не лучшим вариантом для этого типа gui, и вам может потребоваться использовать другие макеты, такие как MigLayout. –
И код работает точно так, как ожидалось – MadProgrammer
Для меня вторая строка выглядит точно так же, как и первая строка –