我有一个 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(使用前将#替换为@)