addMouseListener或addActionListener或JButton?

Hec*_*ret 6 java swing button

在定义JButton上的简单点击行为时,这是正确的方法吗?而且,有什么区别?

JButton but = new JButton();
but.addActionListener(new ActionListener() {          
    public void actionPerformed(ActionEvent e) {
         System.out.println("You clicked the button, using an ActionListener");
    }
}); 
Run Code Online (Sandbox Code Playgroud)

要么

JButton but = new JButton();
but.addMouseListener(new java.awt.event.MouseAdapter() {
    public void mouseClicked(java.awt.event.MouseEvent evt) {
        System.out.println("You clicked the button, using a MouseListenr");
    }
});
Run Code Online (Sandbox Code Playgroud)

jfp*_*ret 7

MouseListener 是Swing中的低级事件监听器(顺便说一下AWT).

ActionListener 是更高级别,应该使用.

比起来更好ActionListener,人们应该使用a javax.swing.Action(实际上是a ActionListener).

使用Action允许在几个小部件之间共享它(例如JButton,JMenuItem......); 您不仅要共享按下按钮/菜单时触发的代码,还要共享状态,特别是是否启用了操作(及其关联的小部件).