有没有办法看到在调用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");
}
});
由于
答案 0 :(得分:3)
是的,有文档显示:ButtonModel。
从该页面开始:
在按钮顶部按下鼠标可使模型同时布防和按下。只要鼠标保持向下,即使鼠标移动到按钮外,模型也会保持按下状态。相反,模型仅在鼠标按下按钮的范围内时被布防(它可以移入或移出按钮,但模型仅在按钮内花费的时间内被布防)。当模型处于布防状态时释放鼠标时触发一个按钮,并触发
ActionEvent
- 这意味着在鼠标先前按下该按钮后,该按钮在按钮顶部释放时(并非已经按下)发布)。鼠标释放后,模型变为非武装和未按下状态。
正如@ dbrown93指出的那样,应用程序代码没有理由将MouseListener添加到JButton。记住还有其他方法来激活JButton,例如使用键盘;不需要鼠标活动。