如何禁用JComponents的进程

时间:2014-11-04 07:46:43

标签: java swing

savebtn.setEnabled(false);

使用上面的代码我禁用了我的保存按钮。但是当我点击该按钮时,保存过程将起作用。单击禁用按钮时如何停止该过程。

1 个答案:

答案 0 :(得分:1)

如果您使用JButton停用setEnabled(false),则点击该按钮时不会调用其注册的ActionListener

但是,如果您使用addMouseListener()方法向其添加了MouseListener,即使该按钮被停用,仍会调用已注册的MouseListener

您应该注册ActionListener来执行按下/单击按钮时所需的作业。这样,如果您禁用该按钮,则单击该按钮将不会调用ActionListener

请参阅以下示例:如果您点击该按钮,它只会打印"clicked",但不会打印"action performed"

JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton b = new JButton("Test");
b.setEnabled(false);
b.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        System.out.println("action performed");
    }
});
b.addMouseListener(new MouseAdapter() {
    @Override
    public void mousePressed(MouseEvent e) {
        System.out.println("clicked");
    }
});
f.add(b);
f.pack();
f.setVisible(true);

如果删除b.setEnabled(false);行,则单击按钮输出将为:

clicked
action performed