2015-01-29 2 views
2

Есть ли простой способ просто удалить горизонтальное пространство перед первым компонентом FlowLayout?Java 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); 

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

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

+0

Какую версию JPanel вы используете? Мне интересно, потому что вы используете 3 параметра в своем конструкторе (сравните: http://docs.oracle.com/javase/7/docs/api/javax/swing/JPanel.html). – mrbela

+1

Как правило, люди хотят разрыва перед первым компонентом. Это выглядит лучше. –

+0

@ user2438518 Извините, исправьте код. Gilbert Le Blanc: Да, но мне нужно, чтобы метки были выровнены слева, поэтому мне нужно удалить интервал. – ghost013

ответ

0

Попытка

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

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

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

+0

Я пробовал это, и проблема в том, что это добавляет пробел в обе стороны, когда я на самом деле один пробел слева от первого ярлыка, а затем пробегает с обеих сторон любые другие метки. – ghost013

4

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

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

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

panel.setBorder(BorderFactory.createEmptyBorder(0, -5, 0, 0)); 
+0

Отрицательная левая граница хорошая трюк =) –