2013-04-21 4 views
3

У меня есть окно JFrame-потомка a с JMenuBar и два компонента, хранящиеся в JPanel. Один из них - JTabbedPane, который занимает большую часть экрана, а другой - маленький JPanel, который, в свою очередь, содержит ряд кнопок. Они построены как таковой:BorderLayout.NORTH ведет себя неспешно

//in constructor: 
menubar = new BFIDEMenuBar(this); 

setJMenuBar(menubar); 

content = new JPanel(); 
add(content); 

buttons = new BFIDEButtonBar(); 

editors = new JTabbedPane(); 

content.add(buttons, BorderLayout.NORTH); 
content.add(editors, BorderLayout.CENTER); 

Когда окно меньше определенного размера, компоненты, расположенные, как и ожидалось: JTabbedPane занимающий центр с «кнопок» JPanel центрированных над ним: Looks good.

Однако, если окно повторно размер выше определенного порогового значения, то JPanel меняется расположение:

Not looking good.

Уменьшая окно заставляет его прыгать вернуться к предыдущей (правильной) позиции.

Я прочитал javadoc for BorderLayout, и я использовал его раньше, но мне еще предстоит столкнуться с этим явлением. В javadoc говорится, что «компоненты NORTH и SOUTH могут растягиваться горизонтально»; но я не думаю, что это растяжение.

Никаких других методов не вызывается из конструктора, кроме добавления нескольких слушателей и обязательных setVisible, setEnabled и т.п.

Любые мысли о том, почему это происходит или как его исправить?

+0

попробовать 'Content = новый JPanel (новый BorderLayout());' 'вместо контента = новые JPanel();' –

+0

@GnomezGrave MadProgrammer бить вас к нему , Спасибо хоть. – ApproachingDarknessFish

+0

Во всяком случае, вы получили правильный ответ. (У) –

ответ

4

JPanel по умолчанию использует FlowLayout.

Попробуйте использовать

content = new JPanel(new BorderLayout()); 

вместо

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