Java FlowLayout Удалить горизонтальное пространство перед первым компонентом

Есть ли более простой способ просто удалить горизонтальное пространство перед первым компонентом в FlowLayout?

Вот как выглядел мой код:

JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEFT, 5, 0));
JLabel label1 = new JLabel("Hello");
JLabel label2 = new JLabel("Goodbye");
panel.add(label1);
panel.add(label2);

Я вижу, что между меткой1 и меткой2 есть горизонтальный зазор, однако он также добавил интервал перед меткой1. Мое текущее решение — удалить горизонтальный зазор и добавить EmptyBorder к label2, чтобы исправить это.

Но для ситуаций со многими компонентами мне интересно, есть ли более простой и эффективный способ сделать что-то такое простое?


person ghost013    schedule 29.01.2015    source источник
comment
Какую версию JPanel вы используете? Мне интересно, потому что вы используете 3 параметра в своем конструкторе (сравните: docs.oracle.com/javase/7/docs/api/javax/swing/JPanel.html).   -  person mrbela    schedule 29.01.2015
comment
Как правило, людям нужен зазор перед первым компонентом. Это выглядит лучше.   -  person Gilbert Le Blanc    schedule 29.01.2015
comment
@ user2438518 Извините, исправил код. Жильбер Ле Блан: Да, но мне нужно, чтобы метки были выровнены по левому краю, поэтому мне нужно убрать интервал.   -  person ghost013    schedule 29.01.2015
comment
Если вам нужно выравнивание столбцов для многих меток и полей, используйте метод GridBagLayout.   -  person Gilbert Le Blanc    schedule 29.01.2015


Ответы (2)


Вы можете использовать горизонтальный BoxLayout:

panel.add( label1 );
panel.add( Box.createHorizontalStrut(5) );
panel.add( label2 );

Или вы можете добавить на панель EmptyBorder вместо меток:

panel.setBorder( BorderFactory.createEmptyBorder(0, -5, 0, 0) );
person camickr    schedule 29.01.2015

Пытаться

new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 0));

Второй параметр обозначает горизонтальный зазор. Так что, возможно, это решит вашу проблему.

Вы также можете посмотреть:

person mrbela    schedule 29.01.2015
comment
Я пробовал это, и проблема в том, что добавляется зазор с обеих сторон, когда я действительно делаю зазор слева от первой метки, а затем промежутки с обеих сторон любых других меток. - person ghost013; 03.02.2015