在我的应用程序中,有四个TextArea,我想在一个Text区域只输入四个字符,光标自动移动到下一个TestArea。再次当我在此TextArea中输入四个字符时,再次光标自动移动到下一个TextArea。
示例:在安装Window XP时,它需要“Key”,当您在第一部分输入四个字符时有四个部分,然后光标自动移动到下一部分。
我在申请中想要的东西。
首先,我添加了CustomizedTextFields.jar,然后创建了四个IntegerField:
private IntegerField text1;
private IntegerField text2;
private IntegerField text3;
private IntegerField text4;
之后我在我的框架上显示所有这些IntegerField。
现在我尝试使用此代码将光标发送到下一个字段,但它不起作用:
text1.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
int a2 = text1.getText().length();
if (a2 == 3) {
text2.getCursor();
}
}
@Override
public void keyReleased(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
}
});
答案 0 :(得分:10)
有趣的问题是尝试改进我对文本包的阴暗知识: - )
这里有两个单独的要求
代码:
JComponent panel = new JPanel();
final int maxSize = 3;
for (int i = 0; i < 4; i++) {
final JTextField field = new JTextField(5);
NavigationFilter filter = new NavigationFilter() {
@Override
public void setDot(FilterBypass fb, int dot, Bias bias) {
if (dot >= maxSize) {
fb.setDot(0, bias);
field.transferFocus();
return;
}
fb.setDot(dot, bias);
}
@Override
public void moveDot(FilterBypass fb, int dot, Bias bias) {
if (dot >= maxSize) {
fb.setDot(0, bias);
field.transferFocus();
return;
}
fb.moveDot(dot, bias);
}
};
field.setNavigationFilter(filter);
((AbstractDocument) field.getDocument()).setDocumentFilter(new DocumentSizeFilter(maxSize));
panel.add(field);
}
documentFilter是Swing Tutorial
中的一个答案 1 :(得分:6)
At the time of installing Window XP it want "Key" and there are four section
when you enter four character in first section then cursor automatically move
to the next section.
将DocumentListener添加到JTextComponents
,以便收听DocumentFilter
不要将KeyListener
用于JTextComponents
,仅使用DocumentListener
将所需的下一个JTextArea
添加到DocumentListener
,如果有第4个类型的话。 Char JTextArea
,
请注意,将Focus
从JTextArea
移动到另一个invokeLater
将更好地包含在{{1}}
答案 2 :(得分:1)
将text2.getCursor()
替换为text2.requestFocus()
。
getCursor()
用于在鼠标悬停在组件上时检索鼠标指针的形状。
此外,使用此方法,仍然可以在字段中输入4个以上的字符,例如通过从剪贴板粘贴。如果你想阻止它,你需要检查输入的文本是否超过4个字符,如果是,则只从中获取前4个字符。
答案 3 :(得分:1)
这样的事情应该有效:
text1.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e){
String value=text1.getText();
if(value.length()==4){
text2.requestFocus();
}
}
text2是你的下一个文本域
答案 4 :(得分:0)
只需创建textarea并转到键入的事件即可 你可以写这个
String number=jTextArea1.getText();
int l=number.length();
if(l==3){
jTextArea1.transferFocus();
}