在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