2016-12-12 3 views
0

Я хочу создать вертикальное пространство между JLabels. Это мой код:Создание вертикального пространства между JLabels не так, как ожидалось

JPanel label = new JPanel(new FlowLayout(FlowLayout.LEFT)); 
    label.add(Box.createVerticalStrut(50)); 
    label.add(label1); 
    label.add(Box.createHorizontalStrut(50)); 
    label.add(label2); 
    label.add(Box.createVerticalStrut(50)); 
    label.add(label3); 
    label.add(Box.createHorizontalStrut(50)); 
    label.add(label4); 

Я хочу иметь равное вертикальное пространство между каждым JLabel, однако, становится странно, когда я настроить Box.createHorizontalStrut(50) Кто-нибудь знает почему? FlowLayout выполняется для размещения JLabels слева от панели. В соответствии с этим я хочу разместить некоторые из JLabels в центре (следовательно, горизонтальное движение), есть ли другой способ сделать это с помощью FlowLayout?

Спасибо.

+2

Распределение потока не является лучшим выбором для этого. Если ваши потребности просты, попробуйте BoxLayout или GridLayout. (Я также предлагаю вам пометить это сообщение 'Swing', чтобы получить нужные люди, чтобы увидеть его.) – Enwired

+0

Случай usloall для' FlowLayout' заключается в размещении ваших компонентов в строке. Используйте «GridBagLayout» для максимальной настройки. Также вы можете использовать некоторые нестандартные макеты. Например [Макет MIG] (http://www.miglayout.com/) или [Форма макета] (http://manual.openestate.org/extern/forms-1.2.1/tutorial/quickstart.html) –

ответ

2

Я хочу создать вертикальное пространство между JLabels

Тогда вы должны, вероятно, использовать BoxLayout. Прочтите раздел из учебника Swing по How to Use BoxLayout для рабочих примеров.

FlowLayout предназначен для размещения JLabels слева от панели. В соответствии с этим

Затем вы можете использовать setAlignmentX(0.0f) на каждой из этикеток. Затем BoxLayout выравнивает метки слева.

Я хочу, чтобы поместить некоторые JLabels в центре

Я считаю, что это значение по умолчанию для выравнивания метки (каждый компонент отличается), поэтому вам не нужно делать что-нибудь. Но если вы хотите, чтобы вы всегда могли использовать setAlignment(0.5f) на этикетке.

Смежные вопросы