2013-04-02 3 views
0

У меня есть JPanel нулевого макета под названием MainPanel. Onclick кнопки Я добавляю JTextpane на mainPanel. При первом щелчке я создаю текстовую область белого цвета фона. При втором щелчке я создаю еще один текстовый слой с синим цветом. Я хочу разместить синюю текстовую панель на белом текстовом пространстве, но синяя текстовая панель идет за белым текстовым пространством. Как я могу поместить его на белую панель?Как определить порядок компонентов, добавленных в JPanel

Код здесь очень прост. Onclick Я создаю новую JTextpane, устанавливая ее размеры и помещая ее на mainPanel.

Размещение образца снимка экрана, который описывает проблему лучше. Здесь синяя текстовая панель отстала от белого текстового поля. Я хочу, чтобы он был выше белого текспана. Как мне это сделать? enter image description here

+1

Было бы проще помочь, если бы вы указали код. –

+1

14 вопросов. Ни один ответ не принят, поэтому я не собираюсь тратить время на то, чтобы ответить, когда усилия не оценены. Только комментарий не использует пустой макет !!! – camickr

ответ

1

Вам необходимо заменить JPanel "MainPanel" на LayeredPanel.

Тогда вы можете сказать:

JLayeredPane mainPanel = new JLayeredPane(); 

JTextPane whitePane = new JTextPane("White text pane on top"); 
JTextPane bluePane = new JTextPane("Blue text pane behind"); 

mainPanel.add(whitePane, 2, 0); 
mainPanel.add(bluePane, 1, 0); 

Edit: Вы можете прочитать больше о LayeredPane здесь: LayeredPane

+0

Спасибо kellax. Я попробую это. Это должно решить мою проблему. – user001

+0

Я скорректировал свой код немного, я объявил 'JLayeredPane' как' mainPanel', но затем назвал 'pane.add'. Должен быть правильным сейчас. –

+0

Все в порядке. Я заменил JPanel на Layered pane в моем коде, и теперь он отлично работает. Большое спасибо :) – user001

2

Если вы хотите придерживаться текущих компонентов, (я думаю, вы должны используйте решение kellax, но я не знаю, есть ли дополнительное требование, которое вынуждает вас использовать ваш текущий подход), вы можете посмотреть в Container.setComponentZOrder (Component comp, int index), чтобы напрямую определить порядок отображения компонентов.