Java Swing / awt - 在MousePressed到ActionEvent之后会发生什么?

时间:2016-01-09 21:18:57

标签: java swing actionevent

有没有办法看到在调用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");
        }

    });

由于

1 个答案:

答案 0 :(得分:3)

是的,有文档显示:ButtonModel

从该页面开始:

  

在按钮顶部按下鼠标可使模型同时布防和按下。只要鼠标保持向下,即使鼠标移动到按钮外,模型也会保持按下状态。相反,模型仅在鼠标按下按钮的范围内时被布防(它可以移入或移出按钮,但模型仅在按钮内花费的时间内被布防​​)。当模型处于布防状态时释放鼠标时触发一个按钮,并触发ActionEvent - 这意味着在鼠标先前按下该按钮后,该按钮在按钮顶部释放时(并非已经按下)发布)。鼠标释放后,模型变为非武装和未按下状态。

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