2015-06-24 11 views
1

У меня есть JPanel, у которого есть JLayeredPane. JLayeredPane имеет JPanel, который имеет BoxLayout и содержит JFreeChart. JLayeredPane также имеет JComboBox; см. изображение ниже.JComboBox исчезает, когда находится над JFreeChart в JLayeredPane

enter image description here

Объект Graph добавляется к chartHolder во время выполнения.

Когда я запустил приложение comboBox дисплей правильно. Как только объект добавлен в chartHolder, combobox останавливает рендеринг. Отобразится только график.

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

chartHolder ->DEFAULT_LAYER в JLayeredPane comboBox ->Pallette_Layer в JLayeredPane.

Основанный на заказе, который я предоставил JLayeredPane, поле со списком всегда должно отображаться над графиком.

В чем проблема?

ответ

2

How to Use Layered Panes: Laying Out Components in a Layered Pane упоминает, что «По умолчанию многоуровневая панель не имеет менеджера компоновки». Вам нужно будет убедиться, что вы устанавливаете положение и размер каждого компонента, как показано на рисунке here, используя setBounds(). ChartPanel наследует FlowLayout от родительского класса, JPanel, по умолчанию; окружающий chartHolder с BoxLayout может быть излишним.

image

+0

я попытался добавить OverlayLayout к jLaeredPane. Возможно, Cant не получил comboBox в нужном месте, хотя – codeNinja

+0

я добавил следующий код и overlaylayout. public boolean isOptimizedDrawingEnabled() { return false; } – codeNinja

+0

Извините, я забыл ссылку на пример; изм. – trashgod