如何让 InputVerifier 与可编辑的 JComboBox 一起使用
题
我有一个 JComboBox
与定制 inputVerifyer
设置为可编辑时限制 MaxLength。
verify 方法似乎永远不会被调用。
同一个验证器被调用 JTextField
美好的。
我可能做错了什么?
解决方案
我找到了一个解决方法。我想我应该让下一个遇到这个问题的人知道。
基本上。您无需在 ComboBox 上设置 inputVerifier,而是将其设置为“编辑器组件”。
JComboBox combo = new JComboBox();
JTextField tf = (JTextField)(combo.getEditor().getEditorComponent());
tf.setInputVerifier(verifyer);
其他提示
向我们展示您的一小部分代码。
package inputverifier;
import javax.swing.*;
class Go {
public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() { public void run() {
runEDT();
}});
}
private static void runEDT() {
new JFrame("combo thing") {{
setLayout(new java.awt.GridLayout(2, 1));
add(new JComboBox() {{
setEditable(true);
setInputVerifier(new InputVerifier() {
@Override public boolean verify(JComponent input) {
System.err.println("Hi!");
return true;
}
});
}});
add(new JTextField());
setDefaultCloseOperation(EXIT_ON_CLOSE);
pack();
setVisible(true);
}};
}
}
看起来 JComboBox 作为复合组件存在问题。 我建议避免这种令人讨厌的 UI 解决方案。
不隶属于 StackOverflow