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

у меня jFrame = кадр

у него есть jcombobox = комбо

тогда у меня есть 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

но до сих пор не имеют ни малейшего представления

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

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


person Jason Amavisca    schedule 10.10.2012    source источник
comment
Добро пожаловать на форум :-) Просто... представьте, что вы на мгновение вступаете в мою шкуру и прочитаете моими глазами свой собственный вопрос: будете ли вы счастливы или хотя бы поймете, о чем пишете?   -  person kleopatra    schedule 10.10.2012


Ответы (1)


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

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

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

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

boolean visibleComp;

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

result.setVisible(false);

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

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

visibleComp = true;

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

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

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

person Anthony Neace    schedule 10.10.2012
comment
спасибо за помощь, но .. я не выбираю элемент в поле со списком, в поле со списком нет элемента, я просто хочу, чтобы прослушиватель всплывающего меню со списком был виден (срабатывал), во всплывающем меню будет отображаться моя панель со многими jlabel .. тогда если щелкнуть jlabel.. combobox добавит элемент (строку) из этого jlabel... между прочим.. помимо добавления jpanel во всплывающее меню combobox.. я могу сделать это с помощью.... если всплывающее окно combobox видно, срабатывает, я setVisible(false) для всплывающего меню jcombobox.. затем установите visible(true) для других всплывающих меню, у которых есть моя панель.. как я могу установитьVisible(false) для моего всплывающего меню со списком? спасибо за любую помощь - person Jason Amavisca; 10.10.2012