2014-09-04 3 views
1

Здравствуйте, у меня возникла проблема с этим. Я пытаюсь создать 2 панели. Один с ярлыками, уложенными друг на друга в BoxLayout, а другая панель с TextFields также с пакетом BoxLayout, сложенным вверх, который соответствует ярлыкам. Я пробовал различные настройки и продолжал получать ошибки.Проблема с JPanel, JFrame, BoxLayout

Я устанавливаю Разметка на JFrame, как FlowLayout()

и использовать это, чтобы установить панели LayoutManager

leftPanel = new JPanel(new BoxLayout(this, BoxLayout.Y_AXIS)); 

Это то, что я делал раньше без проблем. что теперь не так?

ОШИБКА:

Exception in thread "main" java.awt.AWTError: BoxLayout can't be shared 
at javax.swing.BoxLayout.checkContainer(BoxLayout.java:465) 
at javax.swing.BoxLayout.invalidateLayout(BoxLayout.java:249) 
at javax.swing.BoxLayout.addLayoutComponent(BoxLayout.java:282) 
at java.awt.Container.addImpl(Container.java:1125) 
at java.awt.Container.add(Container.java:415) 
at DataWriteExample.BuildLeftPanel(DataWriteExample.java:37) 
at DataWriteExample.<init>(DataWriteExample.java:24) 
at DataWriteExample.main(DataWriteExample.java:58) 
Java Result: 1 
+0

[ 'общественного BoxLayout (С ontainer target, int axis) '->' target - контейнер, который необходимо выложить'] (http://docs.oracle.com/javase/8/docs/api/javax/swing/BoxLayout.html#BoxLayout -java.awt.Container-int-) –

ответ

4

Вы можете попробовать это вместо:

leftPanel = new JPanel(); 
leftPanel.setLayout(new BoxLayout(leftPanel, BoxLayout.Y_AXIS)); 

Update

Проблема с кода:

leftPanel = new JPanel(new BoxLayout(this, BoxLayout.Y_AXIS)); 
-------------------------------------^ 
// here `this` is not leftPanel, I believe its the JFrame instance 
// hence your getting the exception of cannot share the layout 
+0

Почему это работает, но вы не можете добавить его в конструктор? Ваш метод решил мою проблему, но почему? Я мог бы поклясться, что раньше использовал его в конструкторе. –

+0

@Code_Help, любезно проверьте обновления – Arvind

+0

Эй, если я попытаюсь добавить в качестве конструктора с leftPanel вместо этого, я все равно получаю ту же ошибку. Разделение его на следующую строку устраняет проблему. Должен ли я добавить менеджера компоновки в конструктор JPanel? –

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