gpt4 book ai didi

Java:光标如何自动从一个 TextField 移动到另一个

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:04:16 24 4
gpt4 key购买 nike

在我的应用程序中有四个 TextArea,我只想在一个文本区域中输入四个字符,光标会自动移动到下一个 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) {
}
});

最佳答案

有趣的问题足以尝试提高我对文本包的模糊知识:-)

这里有两个独立的需求

  • 限制文本的长度:这是通过 DocumentFilter 完成的,@mKorbel 已经指出
  • 在达到最大长度后自动将焦点转移到下一个组件:事实证明这可以通过 NavigationFilter 完成

在代码中:

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 的那个

关于Java:光标如何自动从一个 TextField 移动到另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9819238/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com