光标在两个字段中闪烁(JTextField)

时间:2012-06-22 21:18:25

标签: java swing focus jtextfield caret

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

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

当调试内部类Handler时,包含在类DefaultCaret中更具体的actionPerformed方法,实现了 那:时间是一个领域,时间是另一个,这正是闪烁的领域(我知道,这似乎很明显)。但他们是 调用方法的Java内部类。

使用Tab键遍历字段时,光标为false,消失。

我正在使用JDK 6


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

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

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

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

2 个答案:

答案 0 :(得分:5)

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

正常情况下,JTextComponent失去焦点setCaretVisible(false) / setSelectionVisible(false)被调用,当焦点获得相反的事情发生时。

关闭JDialog后,尝试将焦点返回invokeLater()。同时检查JComponent父母中第一个可聚焦JDialog的内容。

答案 1 :(得分:0)

出现这种情况是因为我正在开发的项目非常庞大,所以不要得到很少的实现示例

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

事实证明,Swing,排队执行,很多线程,然后派遣他们去,虽然他没有完成运行它,你可以填写grabFocus()或requestFocus(),这不哭,第一个他必须完成所有事情,然后运行我的请求焦点。

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

感谢您的提示。