我有一个处理日期和时间的Swing应用程序,所以很多测试都在改变系统的日期和时间设置.
在测试期间,我们注意到在减少时钟后,应用程序将忽略第一次单击.
在测试期间,我们注意到在减少时钟后,应用程序将忽略第一次单击.
这是Swing / Java / Windows的错误吗?这有解决方法吗?
有趣的是,只有在减少日期/时间设置时才会出现此问题.如果我增加它,应用程序行为正常.
情况:
> Swing应用程序正在运行.
>减少Windows日期和时间设置(例如,将时间从15:00更改为14:00).
>请注意,Swing应用程序中的第一次单击不会触发任何操作.
代码示例(您可以使用它来证明情况):
import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JButton; import javax.swing.JFrame; public class Main { public static void main(String[] args) { final JFrame frame = new JFrame("frame"); final JButton button = new JButton("button"); button.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent e) { System.out.println("Button Pressed!"); } }); frame.add(button); frame.setSize(200,200); frame.setVisible(true); frame.addWindowListener(new WindowAdapter() { @Override public void windowClosing(final WindowEvent e) { System.exit(0); } }); } }
解决方法
如
here所示,Swing使用日期来检查事件何时发生.因此,在某种程度上,通过放弃您的操作,处理程序在此处起作用,因为它发生在“最后一个操作之前”.我不能确认你这个,但是有些布局管理器或其他处理程序在这里搞乱了一些东西,以防止延迟事件搞乱当前流程.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。