java - 如何在 addPropertyChangeListener 中打开 JCombobox

标签 java swing layout-manager jdatechooser propertychangelistener

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

        }

    }       

});

最佳答案

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

// 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 的设计目的是与核心的布局管理器一起工作,放弃这些将导致无休止的问题和问题,您将花费越来越多的时间来尝试纠正

看看Why is it frowned upon to use a null layout in SWING?Laying Out Components Within a Container了解更多详情...

关于java - 如何在 addPropertyChangeListener 中打开 JCombobox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27246392/

相关文章:

java - 如何在面板底部对齐不同尺寸的按钮?

java - 我是 Java Swing 的新手,一般来说,我今天编写的代码有一个涉及 button.doClick() 方法的奇怪故障。

java - JScrollPane 组件的列式布局

Java - 无法移动 JTextField 的位置

java repaint 屏蔽了 jbutton

java - 需要帮助制作按钮继电器信息

java - 无法在 JPanel 上绘图

java - java 数组和静态方法

java - 无法找到库 : liblwjgl. dylib

java - 无法将 JDBC-Hikari 连接到我的 Micronaut 应用程序