button = new JButton("开始数据转换");
                button.setEnabled(false);
button.addMouseListener(new MouseAdapter() {
public void mouseClicked(final MouseEvent arg0) {
if(!button.isEnabled())
return;
SetActionLable("开始数gggg据转换");
}
});
我用button.setEnabled(false);把BUTTON禁用,但我运行程序时BUTTON的确是变灰了,但鼠标的的mouseClicked事件依然是产生的,我只能多加一句if(!button.isEnabled()) return;来限定了,是什么原因呢?BUTTON禁用后应该至少mouseClicked不响应才对的啊?谢了

解决方案 »

  1.   

    java API:
    public void setEnabled(boolean enabled)
    设置是否启用此组件。
    已启用的组件可以响应用户输入,而未启用的组件则无法响应用户输入。
    可以在禁用某些组件时更改其可视化表现形式,以向用户提供反馈,说明其无法接受输入。 
      

  2.   

    禁用了动作,没有禁用事件,下面代码你运行以下看看就清楚了import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;import javax.swing.JButton;
    import javax.swing.JFrame;public class SimpleTest {    /**
         * @param args
         */
        public static void main(String[] args) {
            JFrame frame = new JFrame();
            JButton button = new JButton("Test");
            button.setEnabled(false);
            button.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    System.out.println("actionPerformed");
                }
            });
            button.addMouseListener(new MouseAdapter() {
                public void mousePressed(MouseEvent e) {
                    System.out.println("mousePressed");
                }
            });
            frame.getContentPane().add(button);
            frame.setVisible(true);
            frame.setSize(200, 200);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
    }
      

  3.   

    button.removeMouseListener(button.getMouseListeners()[1]);