在java swing中输入文本字段后自动选项卡?

在java swing中输入文本字段后自动选项卡?,java,swing,jtextfield,Java,Swing,Jtextfield,我试过一些东西,但没有得到结果 private void txtNameKeyPressed(java.awt.event.KeyEvent evt) { String value = txtName.getText(); digitcheck = value; if ((evt.getKeyCode() >= KeyEvent.VK_1 && evt.getKeyCode() &

我试过一些东西,但没有得到结果

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);

        }  

}      
private void txtNameKeyPressed(java.awt.event.KeyEvent evt){
字符串值=txtName.getText();
digitcheck=值;
如果((evt.getKeyCode()>=KeyEvent.VK_1&&evt.getKeyCode()我的第一个到第二个想法是“为什么不使用复选框?”

但我的问题是做而不是问:p

首先,我不会使用
KeyListener
。这不是筛选文本组件的合适方法,最好使用
DocumentFilter
,这样可以自动限制添加到文本字段的字符数和类型

第二,在这种情况下,我可能不会使用
Robot
,但那只是我自己

我可能只会使用内置方法。它更简单,并且考虑了密钥传输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