Как открыть JCombobox в addPropertyChangeListener

В JDateChooser мы добавили addPropertyChangeListener, который определяет, выбрана ли дата. Если он выбран, мы хотим открыть JCombobox. Строка (дата) обнаруживается при выборе, но мы не можем открыть JComboBox.

Вот код:

dateChooserCal.getDateEditor().addPropertyChangeListener(new PropertyChangeListener() {
    public void propertyChange(PropertyChangeEvent evt) 
    {
        date = dateChooserCal.getDate();

        if ("date".equals(evt.getPropertyName())) 
        {   
            dates = evt.getNewValue();
            dateString = String.format("%1$td-%1$tm-%1$tY", date);  
            if (dateString != null) 
            {
                System.out.print(dateString);
                chooseTimeBox = new JComboBox(controllerApp.getTime());
                chooseTimeBox.setBounds(215, 261, 282, 22);
                add(chooseTimeBox);
                chooseTimeBox.setVisible(true);
            }

        }

    }       

});

1 ответ

Решение

Ну, тот факт, что поле со списком не содержится ни в одном отображаемом элементе, вероятно, является основной причиной вашей проблемы...

// You create a new instance
chooseTimeBox = new JComboBox(controllerApp.getTime());
// You  position and size, more on this later...
chooseTimeBox.setBounds(215, 261, 282, 22);
// You make it visible...but it's visible by default...
chooseTimeBox.setVisible(true);
// But you never add it to anything...

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

Избегать использования null макеты, идеальные пиксельные макеты - иллюзия в современном дизайне пользовательского интерфейса. Есть слишком много факторов, которые влияют на индивидуальный размер компонентов, ни один из которых вы не можете контролировать. Swing был разработан для работы с менеджерами компоновки в ядре, отказ от которых не приведет к концу проблем и проблем, которые вы будете тратить все больше и больше времени, пытаясь исправить

Взгляните на Почему это неодобрительно для использования нулевого макета в SWING? и размещение компонентов в контейнере для более подробной информации...

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