Добавить панель в выпадающее меню выпадающего списка
У меня есть jFrame = кадр
у этого есть jcombobox = combo
тогда у меня есть jpanel = панель
у меня есть много компонентов внутри этой панели
я пытаюсь добавить эту панель в выпадающее меню
поэтому, если щелкнуть по списку,
панель, которая имеет много компонентов, будет отображаться
можно добавить панель во всплывающее меню в поле со списком?!?!
как это сделать???
я уже читал
http://docs.oracle.com/javase/tutorial/uiswing/components/combobox.html
а также
но до сих пор понятия не имею
как это сделать?
Большое спасибо за любую помощь...
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 с этим примером. Надеюсь, это поможет.