gpt4 book ai didi

java - 检查哪个 JTextField 将获得焦点

转载 作者:行者123 更新时间:2023-12-02 00:26:39 25 4
gpt4 key购买 nike

我有一个包含两个 JTextField 的表单:text1text2

每个文本字段都有一个焦点监听器,我正在监听 text1 和 text2 上的 focusLost()

焦点遍历是text1 -> text2

当 text2 失去焦点时,text1 和 text2 会被处理,然后清除,然后焦点再次设置为 text1。

在 text2 上,这是我的自定义焦点监听器:

private class Text2FocusListener implements FocusListener{
@Override
public void focusLost(FocusEvent arg0){
if(arg0.isTemporary()){
return;
}
process_input...
}
}

问题是,如果用户需要单击(通过鼠标或键盘)返回 text1(即需要更正 text1 字段中的数据),则 text2 的焦点会丢失,并且会处理 text1 和 text2 的输入。

if 子句中,我需要以某种方式检查焦点是否转到 text1,但我不知道如何进行。

有其他人处理过类似的问题吗?

最佳答案

  1. Focus/FocusSubsystem 非常异步,您必须将相关代码包装到 invokeLater

  2. FocusListener 在与其他监听器一起添加到 JTextComponents 的情况下可能会导致问题,例如FocusListenerItemListener 添加到(可编辑)JComboBox 导致 end_less 循环,或者与 Caret 一起使用 stange 行为 DocumentListener 也是如此,

  3. focusLost 上删除这些监听器,

  4. focusGained 内的所有代码结束后仅添加所需的监听器

  5. 由于您需要 FocusListener 的原因,也许有两个更好的选择,但您的问题没有明确的内容,请使用 SSCCE 编辑您的问题

关于java - 检查哪个 JTextField 将获得焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9904912/

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