1

你好?有人遇到过这样的问题:光标一次在多个字段中闪烁?在我的情况下,会发生以下情况:当您双击字段 JTextField 时,会打开一个 JDialog,因此在关闭此字段后,焦点会回到打开屏幕之前单击的字段。

发生的情况是执行此操作后,两个字段同时闪烁(通常是第一个字段屏幕,以及 efetuei 双击的字段)。这种媒介是随机的,在某些情况下它不会发生。

在调试内部类 Handler 时,包含在类 DefaultCaret 中,更具体地说是 actionPerformed 方法,意识到:时间是一个字段,时间是另一个字段,它们正是闪烁的字段(q 似乎很明显我知道)。但它们是调用该方法的 Java 内部类。

使用 Tab 越过字段时,光标 false 消失。

我正在使用 JDK 6


我在 invokeLater() 中返回了焦点,但没有解决。现在两者同步闪光

第一个可聚焦的 JComponent 是不正确闪烁的字段之一

我正在使用自己的 FocusTraversalPolicy,这可能会产生影响吗?有趣的是,我的班级并没有什么特别奇怪的待遇。

我注意到标准 Java 类,使用 Syncronized getFirstComponent() 中的方法,但添加了相同的控件,但仍然不行

4

2 回答 2

5

实际上这对我来说是焦点问题。

通常当JTextComponent失去焦点setCaretVisible(false)/setSelectionVisible(false)被调用并且当焦点获得相反的事情发生。

关闭后JDialog尝试返回 Focus 里面invokeLater()。还要检查' 的父级JComponent中的第一个焦点是什么。JDialog

于 2012-06-23T08:06:12.487 回答
0

出现这种情况是因为我正在开发的项目比较大,所以不要拿到小实现的例子

该项目有许多组件,表和容器,需要同时关注。

原来Swing,把很多线程放到一个队列中执行,然后dispatch就去,趁他还没跑完,就塞着grabFocus()或者requestFocus(),不哭,首先他必须完成所有事情,然后运行我的请求焦点。

使用 Swing SwingUtilities.invokeLater(...); 姑息性地解决了这种情况;

感谢您的提示。

于 2012-07-06T12:18:03.767 回答