2010-09-21 2 views
5

Короче говоря, мне нужно иметь фоновое изображение в моем приложении java, а на каком-то событии создать другую графику поверх этого изображения.Java-control Z-порядок JPanels

Я думал, что буду использовать JPanel, чтобы нарисовать фоновое изображение, добавьте его в мой JFrame в начале программы, а затем добавьте другие JPanels поверх этого на определенные события. Проблема заключается в том, что Swing дает JPanels, добавив сначала самый высокий индекс Z, поэтому то, что должно быть моим фоном, появляется поверх всего.

Есть ли способ управлять индексом Z/порядком JPanels, или я иду об этом совершенно неправильно?

ответ

2

Звучит странно, чтобы добавить Mutiple JPanels и использовать Z-порядок. Я бы предложил вам либо просто добавить ОДИН JPanel с методом paintComponent (Graphics g), который был переписан, где вы рисуете правильное изображение в соответствии с вашими событиями.

Или использовать CardLayout и добавьте компоненты JLabel (с различными изображениями), а затем, когда ваши триггерами событий, используйте

CardLayout cl = (CardLayout)getLayout(); 
cl.show(this, "card3"); 

, чтобы показать правильный JLabel.

1

Я думал, я хотел бы использовать JPanel, чтобы нарисовать фоновое изображение, добавьте его в мое JFrame начала программы,

Звучит разумно.

, а затем добавить другие JPanels поверх , что при определенных событиях. Проблема - Swing дает JPanels, добавив первый самый высокий индекс Z, так что должно быть мой фон показывает вверх все.

Добавление панели к панели аналогично добавлению другого компонента к панели. Детский компонент будет окрашен поверх родительской панели. Нет необходимости играть с Z-Order.

Ключ должен установить диспетчер компоновки на панели с изображением. Затем каждая панель, которую вы добавляете на панель изображения, должна быть сделана непрозрачной, чтобы фоновое изображение было нарисовано.

Возможно, Background Panel может вам помочь. Он автоматически превращает любой компонент, добавленный непосредственно в панель, непрозрачный.

2

JLayeredPane предназначен для этой цели. Он позволяет вам контролировать Z-порядок компонентов.

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