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(それが であると仮定します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 に答える