2

我的 jcombobox 中已经有了这个:

myjcombobox.getEditor().getEditorComponent().addKeyListener(new KeyAdapter() {
        @Override
        public void keyTyped(KeyEvent e) {
            char c = e.getKeyChar();
            if (!(Character.isDigit(c)
                    || (c == KeyEvent.VK_BACK_SPACE)
                    || (c == KeyEvent.VK_DELETE))) {
                getToolkit().beep();
                e.consume();
            }
        }
    });

此代码可防止在 jcombobox 中写入除数字之外的任何字符。只有数字。但由于我的 jcombobox 是可编辑的,用户可以写几个数字,这就是问题所在,我想设置最大长度为 4 位但不知道我该怎么做......

提前致谢

4

2 回答 2

1

将您自己Document的组件设置为(假设它是 a JTextField):

.setModel(new PlainDocument(){

    public void insertString(int offset, String text, AttributeSet attr){
        if(getLength() + text.length() > 4){
            Toolkit.getToolkit.beep();
            return;
        }

        for(char c : text.toCharArray(){
            if(!Character.isDigit(c){
                || (c != KeyEvent.VK_BACK_SPACE)
                || (c != KeyEvent.VK_DELETE)){

                Toolkit.getToolkit.beep();
                return;
            } 

        }
        super.insertString(offset,text,attr);
    }
}); 
于 2012-11-30T17:05:10.687 回答
1

假设你的 JCombobox 是最终的,你可以试试这个:

myjcombobox.getEditor().getEditorComponent().addKeyListener(new KeyAdapter() {

            @Override
            public void keyTyped(KeyEvent e) {
                char c = e.getKeyChar();
                if (myjcombobox.getEditor().getItem().toString().length() < 4) {
                    if (!(Character.isDigit(c) || (c == KeyEvent.VK_BACK_SPACE) || (c == KeyEvent.VK_DELETE))) {
                        f.getToolkit().beep();
                        e.consume();
                    }
                } else { 
                    e.consume();
                }
            }
        });
于 2012-11-30T17:13:31.163 回答