如何使InputVerifier与可编辑的JComboBox一起使用
时间:2020-03-05 18:50:51 来源:igfitidea点击:
我有一个带有自定义inputVerifyer
的JComboBox
,它在设置为可编辑时限制了MaxLength。
验证方法似乎从未被调用过。
相同的验证器将被罚款JTextField
。
我可能做错了什么?
解决方案
回答
向我们展示代码的一小部分。
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解决方案。
回答
我找到了解决方法。我以为我会让下一个有这个问题的人知道。
基本上。无需在ComboBox上设置inputVerifier,而是将其设置为" Editor Component"。
JComboBox combo = new JComboBox(); JTextField tf = (JTextField)(combo.getEditor().getEditorComponent()); tf.setInputVerifier(verifyer);