【问题标题】:Java Swing/awt - What happens after MousePressed till ActionEvent?Java Swing/awt - MousePressed 到 ActionEvent 之后会发生什么?
【发布时间】:2016-01-09 21:18:57
【问题描述】:

有没有办法查看在调用 mousePressed 直到触发 ActionEvent 之后会发生什么? 我需要创建一个 UML 序列图,从 mousePressed(MouseEvent) 开始,直到触发 ActionEvent。是否有一些文件可以证明这一点?我尝试在 Eclipse 中调试一个示例,但由于某种原因,我看不到何时触发 ActionEvent。

jbutton.addMouseListener(new MouseListener() {
**THIS IS CALLED FIRST**
        @Override
        public void mousePressed(MouseEvent e) {
            // TODO Auto-generated method stub
            System.out.println("pressed");
        }
    });



    jbutton.addActionListener(new ActionListener() {

        **AFTER SOME TIME THIS IS CALLED**
        @Override
        public void actionPerformed(ActionEvent e) {

            System.out.println("action");
        }

    });

谢谢

【问题讨论】:

  • 你为什么在 JButton 上使用鼠标监听器?假设两个侦听器都触发了各自的方法,jbutton 将遍历其侦听器集合并调用各自的方法
  • 当同一组件产生 mousePressed 和 mouseReleased 事件时,内部会产生一个 ActionEvent。

标签: java swing actionevent


【解决方案1】:

是的,有文档显示:ButtonModel

从那个页面:

在按钮上按下鼠标会使模型既武装又被按下。只要鼠标保持按下状态,模型就会保持按下状态,即使鼠标移出按钮也是如此。相反,模型仅在鼠标保持在按钮范围内按下时才启用(它可以移入或移出按钮,但模型仅在按钮内花费的部分时间内启用)。一个按钮被触发,ActionEvent 被触发,当模型被武装时释放鼠标 - 意思是在鼠标之前按下该按钮(并且尚未释放)之后在按钮顶部释放它.释放鼠标后,模型变为非武装且未按下。

正如@dbrown93 指出的那样,应用程序代码没有理由将 MouseListener 添加到 JButton。请记住,还有其他方法可以激活 JButton,例如使用键盘;不需要鼠标活动。

【讨论】:

    猜你喜欢
    • 2014-07-04
    • 2023-03-26
    • 2016-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多