Java 只接受字母的JCombobox

Java 只接受字母的JCombobox,java,swing,Java,Swing,如何创建一个只接受字母且长度为3的组合框? 我创建了一个“自动完成”组合框,将“可编辑”设置为true。 现在,我想允许用户只在组合框的输入字段中输入长度为3的字母。有什么想法吗 我将这个文档过滤器添加到Jcombobox的textfield中 class AlphaDocumentFilter extends DocumentFilter { private final static Pattern CHARACTERS = Pattern.compile("[a-zA-Z]");

如何创建一个只接受字母且长度为3的组合框? 我创建了一个“自动完成”组合框,将“可编辑”设置为true。 现在,我想允许用户只在组合框的输入字段中输入长度为3的字母。有什么想法吗

我将这个文档过滤器添加到Jcombobox的textfield中

class AlphaDocumentFilter extends DocumentFilter {

  private final static Pattern CHARACTERS = Pattern.compile("[a-zA-Z]");

      public void insertString(DocumentFilter.FilterBypass fb, int offset, String text,
          AttributeSet attr) throws BadLocationException {
        if (text != null && CHARACTERS.matcher(text).matches() && (fb.getDocument().getLength() + text.length()) <= 3){
          fb.insertString(offset, text.toUpperCase(), attr);
        }

      }

      public void replace(DocumentFilter.FilterBypass fb, int offset, int length, String text,
          AttributeSet attrs) throws BadLocationException {
        if (text != null && CHARACTERS.matcher(text).matches() && (fb.getDocument().getLength() + text.length() - length) <= 3){
          fb.replace(offset, length, text.toUpperCase(), attrs);
        }

      }
    }
类AlphaDocumentFilter扩展了DocumentFilter{ 私有最终静态模式字符=Pattern.compile(“[a-zA-Z]”); public void insertString(DocumentFilter.FilterBypass fb,int offset,String text, AttributeSet attr)引发BadLocationException{
如果(text!=null&&CHARACTERS.matcher(text).matches()&&(fb.getDocument().getLength()+text.length())您需要访问组合框的编辑器,以便可以筛选字符。组合框的默认编辑器是文本字段。您可以使用以下方法访问文本字段:

ComboBoxEditor editor = comboBox.getEditor();
JTextField textField = (JTextField)editor.getEditorComponent();
过滤字符的最佳方法是在文本字段的
文档
上使用
文档过滤器
。请阅读上的Swing教程中的部分。该教程包含一个工作过滤器,用于限制可以输入的字符数

您需要修改筛选器以仅允许字母字符。注意,您需要修改
replace()
insertString()
方法,因为这两种方法中的任何一种都可能用于向
文档添加文本

编辑:

阅读上Swing教程的部分。有一个使用可编辑组合框的示例。请注意该部分中的注释:


当用户从菜单中选择一个项目并键入Enter时,可编辑组合框将触发一个操作事件。请注意,当用户在组合框中输入值时,菜单将保持不变。如果需要,您可以轻松编写一个操作侦听器,在用户每次键入唯一值时向组合框的菜单添加一个新项目。

首先是plz搜索的更细的问题。例如,它归结为配置编辑器的文本字段,因此
JComboBox
是不相关的。请提供一个.search,然后提供一个你陷入困境的代码。然后我们可以帮你,不要只要求代码。不要使用KeyListener(根据上面链接的建议)。上面链接中的建议对粘贴的文本不起作用。Swing有更新更好的API可供使用。谢谢,它起作用了。但是你能帮我解决上面遇到的问题吗。