Итак, из вашего описания у вас есть невидимая панель, которую вы хотели бы отобразить, если щелкнуть поле со списком? Таким образом, он появится для любого параметра в поле со списком?
Это должно быть достаточно просто. Давайте изменим 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