0

在 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);
            }

        }

    }       

});
4

1 回答 1

3

那么组合框不包含在任何可显示元素中的事实可能是您问题的主要原因......

// 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布局,像素完美的布局是现代 ui 设计中的一种错觉。影响组件单个尺寸的因素太多,您无法控制。Swing 旨在与核心的布局管理器一起工作,丢弃这些将导致无穷无尽的问题和问题,您将花费越来越多的时间来尝试纠正

看看为什么不赞成在 SWING 中使用空布局?在容器中布置组件以获取更多详细信息...

于 2014-12-02T10:12:19.877 回答