加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Swing在减少Windows时间后忽略第一次单击

发布时间:2020-12-15 02:28:20 所属栏目:Java 来源:网络整理
导读:我有一个处理日期和时间的Swing应用程序,所以很多测试都在改变系统的日期和时间设置. 在测试期间,我们注意到在减少时钟后,应用程序将忽略第一次单击. 这是Swing / Java / Windows的错误吗?这有解决方法吗? 有趣的是,只有在减少日期/时间设置时才会出现此问
我有一个处理日期和时间的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使用日期来检查事件何时发生.因此,在某种程度上,通过放弃您的操作,处理程序在此处起作用,因为它发生在“最后一个操作之前”.我不能确认你这个,但是有些布局管理器或其他处理程序在这里搞乱了一些东西,以防止延迟事件搞乱当前流程.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读