2

私は何かを試しましたが、結果が得られませんでした

private void txtNameKeyPressed(java.awt.event.KeyEvent evt) {                                   
    String value = txtName.getText();
    digitcheck = value;
    if ((evt.getKeyCode() >= KeyEvent.VK_1 && evt.getKeyCode() <= KeyEvent.VK_2)) 
        {
            txtName.setEditable(true);

            //If the Digit in JTextField exceeds two digits JTextField is deactivated
            if(maxDigit(1))
            {
                try {
                    txtName.setEditable(true);
                    txtAdd.setEnabled(true);
                    Robot robot = new Robot();
                    robot.keyRelease(KeyEvent.VK_TAB);
                } catch (AWTException ex) {
                    Logger.getLogger(Demo.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
            else
            {
                txtAdd.setEnabled(false);
            }
        }
        else 
        {
            txtAdd.setEnabled(false);

        }  

}      
4

1 に答える 1

2

1 つ目は「なぜ」、2 つ目は「チェック ボックスを使用しない理由」です。

しかし、私は質問するのではなく、行うことです:P

初め。私は使用しませんKeyListener。これは、テキスト コンポーネントをフィルタリングする適切な方法ではありません。 を使用したほうがよいでしょうDocumentFilter。このようにして、テキスト フィールドに追加される文字の数と種類を自動的に制限できます。

第二に、私はおそらくRobotこの文脈では使用しないでしょうが、それは私だけです.

私はおそらく組み込みのtransferFocus方法を使用するでしょう。よりシンプルで、キー転送 API を考慮しています...

((AbstractDocument)field1.getDocument()).setDocumentFilter(new DocumentFilter() {

    @Override
    public void insertString(FilterBypass fb, int offset, String string, AttributeSet attr) throws BadLocationException {
        super.insertString(fb, offset, string, attr);
    }

    @Override
    public void remove(FilterBypass fb, int offset, int length) throws BadLocationException {
        super.remove(fb, offset, length);
    }

    @Override
    public void replace(FilterBypass fb, int offset, int length, String text, AttributeSet attrs) throws BadLocationException {
        if (text.startsWith("1") || text.startsWith("2")) {

            field1.transferFocus();

        }
        super.replace(fb, offset, length, text, attrs);
    }

});

多数の優れた例については、こちらをご覧ください。DocumentFilter

于 2012-10-06T08:52:39.103 に答える