Позиционирование JLabel на JPanel

public class Test extends JFrame {
    JPanel panel = new JPanel();
    JLabel label = new JLabel("g");
    JLabel label2 = new JLabel("w");

    public Test(){
        this.setVisible(true);
        this.add(panel, BorderLayout.SOUTH));
        this.setSize(200,200);
        panel.add(label, new FlowLayout(FlowLayout.RIGHT);
        panel.add(label2, new FlowLayout(FlowLayout.LEFT);
    }
}

Я думал, что это поместит ярлык справа от label2, но разве я не поступлю так?

1 ответ

Проблема в следующем panel.add(label, new FlowLayout(FlowLayout.RIGHT)); это ложная конструкция, ваш JPanel по умолчанию имеет FlowLayout и вы добавляете компоненты слева направо или справа налево один за другим. Из-за этого добавьте ваши ярлыки следующим образом:

 panel.add(label2);
 panel.add(label);

Также:

Вызов setVisible(true); в конце строительства JFrame,

использование pack() метод вместо setSize(200,200);

Читать учебник для LayoutManagers а также FlowLayout ,

Другие вопросы по тегам