3

我正在研究验证可编辑 JComboBox 输入的各种方法。目前,我需要将输入限制为指定范围内的数字。到目前为止,我已经找到了 3 种不同的方法。对解决此问题的最佳方法有任何想法吗?

JComboBox comboBox = new JComboBox(
    new Object[] {"Donnie", "Danny", "Joey", "Jordan", "Jonathan"}
);

comboBox.setEditable(true);
  1. 通过实现覆盖方法 insertString 和 remove 的专用 Document 来控制用户输入。

    // get the combo boxes editor component
    JTextComponent editor =
            (JTextComponent) comboBox.getEditor().getEditorComponent();
    // change the editor's document
    editor.setDocument(new BadDocument())
    
  2. 将 JComboBox 的 JTextField 替换为 JFormattedTextField。

  3. 您可以使用输入验证器作为自定义格式化程序的替代方案

    // set the input verifier
    setInputVerifier(verifier);
    
    class MyVerifier extends InputVerifier implements ActionListener 
    {
        public boolean shouldYieldFocus(JComponent input) {}
    }
    

谢谢。

4

1 回答 1

2

这就是 InputVerifier 的设计目的。我会从其中一个开始,但实际上这应该可以解决问题。您的要求中有什么特殊原因说明它为什么不起作用?

于 2009-05-01T20:01:46.930 回答