检测 JComboBox 编辑

2024-01-09

我有一个 JComboBox,每秒一次,我想从数据库中检索一组字符串,并将这些字符串设置为 JComboBox 的内容,并将其中一个作为当前选定的值。但我还希望用户能够编辑 JComboBox 并向数据库添加值并将其设置为当前值。

我希望能够检测何时将字符输入 JComboBox,因此我可以重置倒计时,只要它不为零,就可以防止更新 JComboBox。我的第一反应是使用 KeyListener,但是组合框的 Java 教程是这样说的,

虽然 JComboBox 继承了注册监听器的方法 低级事件——例如焦点、按键和鼠标事件——我们 建议您不要监听组合框上的低级事件。

他们接着说,触发的事件可能会根据外观和感觉而改变。


这有点冒险,但它应该可以侦听编辑器组件(JTextField)上的文档更新。

    JComboBox cb = new JComboBox();
    Component editor = cb.getEditor().getEditorComponent();
    if (editor instanceof JTextField) {
        ((JTextField) editor).getDocument().addDocumentListener(new DocumentListener() {
            @Override
            public void insertUpdate(DocumentEvent documentEvent) {
                //To change body of implemented methods use File | Settings | File Templates.
            }

            @Override
            public void removeUpdate(DocumentEvent documentEvent) {
                //To change body of implemented methods use File | Settings | File Templates.
            }

            @Override
            public void changedUpdate(DocumentEvent documentEvent) {
                //To change body of implemented methods use File | Settings | File Templates.
            }
        });                                      
    }

对于从 JComboBox 中键入/删除的每个字符,都应该调用这些 *Update(DocumentEvent documentEvent) 方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检测 JComboBox 编辑 的相关文章

随机推荐