在actionPerformed完成java之前单击禁用按钮

Ste*_*eve 4 java swing jbutton actionlistener event-dispatch-thread

我有一个按钮执行一个很长的功能,我想在用户点击它之后禁用此按钮,以防止他多次再次点击它

该按钮被禁用,但问题是在功能完成后按钮再次启用
我试图放入button.setEnabled(false);一个新的线程,但它没有工作

用于测试此代码示例

button.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent ae) {
        button.setEnabled(false);
        for (int i = 0; i < Integer.MAX_VALUE; i++) {
            for (int j = 0; j < Integer.MAX_VALUE; j++) {
                for (int ii = 0; ii < Integer.MAX_VALUE; ii++) {
                }
            }
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

tra*_*god 6

使用SwingWorker长期运行的后台任务.在这个例子中,startButton动作确实如此setEnabled(false),而工作者的done()实现确实如此setEnabled(true).