Добавить панель в выпадающее меню выпадающего списка

У меня есть jFrame = кадр

у этого есть jcombobox = combo

тогда у меня есть jpanel = панель

у меня есть много компонентов внутри этой панели

я пытаюсь добавить эту панель в выпадающее меню

поэтому, если щелкнуть по списку,

панель, которая имеет много компонентов, будет отображаться

можно добавить панель во всплывающее меню в поле со списком?!?!

как это сделать???

я уже читал

http://docs.oracle.com/javase/tutorial/uiswing/components/combobox.html

а также

http://docs.oracle.com/javase/tutorial/uiswing/examples/components/ComboBoxDemoProject/src/components/ComboBoxDemo.java

но до сих пор понятия не имею

как это сделать?

Большое спасибо за любую помощь...

1 ответ

Итак, из вашего описания, у вас есть панель, которая не видна, которую вы хотели бы видеть, если щелкнуть по списку? Значит, он появится для любого параметра в выпадающем списке?

Это должно быть достаточно просто. Давайте изменим JLabel в этом ComboBoxDemo из учебников по Java. Так как они оба наследуют от JComponent мы сможем сделать JLabel и JPanel видно так же.

Во-первых, убедитесь, что вы понимаете, что делает демо. Опции Combobox изменяют формат текста даты в JLabel. Мы хотим отредактировать демонстрацию таким образом, чтобы этот JLabel не отображался до тех пор, пока мы не выберем любую опцию в нашем JComboBox.

Во-первых, мы хотим включить логическое значение в качестве переменной класса, чтобы мы могли получить к нему доступ в любом из наших методов.

boolean visibleComp;

Далее в конструкторе вы захотите изменить "результат" JLabel, чтобы он был невидимым по умолчанию. Мы можем сделать это с помощью метода setVisible JComponent.

result.setVisible(false);

Теперь нам нужно контролировать, когда и как результат становится видимым - по мере продолжения работы с кодом мы видим, что actionPerformed Метод обрабатывает наши события и передает детали форматирования другому методу, называемому reformat.

Поскольку reformat также вызывается в нашем конструкторе, мы захотим установить наше логическое значение в методе actionPerformed.

visibleComp = true;

Затем мы захотим добавить условный оператор в блок try при переформатировании - он проверит, является ли наш логический параметр истинным, что произойдет, только если пользователь выполнил действие. Мы можем использовать это, чтобы установить видимость нашего компонента.

if(visibleComp){
     result.setVisible(true);
}

Вы можете легко поменять JPanel с этим примером. Надеюсь, это поможет.

Другие вопросы по тегам