【发布时间】:2012-05-31 19:36:56
【问题描述】:
这是我的代码的简单版本:
JTextArea textareaA = new JTextArea(...);
JTextArea textareaB = new JTextArea(...);
textareaA.addModificationListener(new Modification Listener()
{
public void modified(Modifiable arg0){
if (textareaA.getValue().contains("\t"))
{
textareaA.setValue(textareaA.getValue().trim());
textareaB.getTextComponent().requestFocusInWindow();
}
}
});
问题是,当我尝试不同的方法来改变 A 的值时,B 永远不会获得焦点。如果我关闭 A 的可聚焦,我将无法重新打开它。我需要从 A 中删除选项卡,然后将焦点放在 B 上,允许用户在需要时单击返回 A,然后选项卡就消失了。上面的代码导致焦点停留在 A 中,即使我有 B 请求它。这可能是时间问题吗?
谢谢!
【问题讨论】:
-
那么您真正需要的是在文本字段之间切换标签的能力?如果是这样,请参阅:stackoverflow.com/questions/2161714/…
-
好的...这是什么
addModificationListener?你有自己的监听器的 javax.swing.JTextArea 子类吗? -
是的,但它的工作原理与您预期的一样。
-
yes I do, but it works just as you would expect但你必须创建自己的方法并覆盖if (textareaA.getValue().contains("\t")) -
如果您告诉我们您想要做什么,这将非常有帮助。我只能猜测: 1. 在您的表单中设置一个 Tab 顺序。 2. 编辑完成后修剪Textfield A中的值。除此之外,设置一个值不会改变焦点。
标签: java swing focus jtextarea timing