我有一个带有自定义inputVerifyer的JComboBox,当它被设置为可编辑时,它会限制MaxLength。
verify方法似乎从未被调用过。
在JTextField fine上调用相同的验证器。
我可能做错了什么?
发布于 2008-09-10 17:38:35
我找到了一种解决方法。我想我应该让下一个有这个问题的人知道。
基本上。不是在ComboBox上设置inputVerifier,而是将它设置为它的“编辑器组件”。
JComboBox combo = new JComboBox();
JTextField tf = (JTextField)(combo.getEditor().getEditorComponent());
tf.setInputVerifier(verifyer);发布于 2008-09-10 16:40:48
给我们看一小段你的代码。
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);
}};
}
}Looks like it's a problem with JComboBox being a composite component.我建议避免这种讨厌的UI解决方案。
https://stackoverflow.com/questions/54567
复制相似问题