gpt4 book ai didi

Java SWT : How to make a button unclickable while a separate thread is running

转载 作者:行者123 更新时间:2023-11-30 06:13:16 26 4
gpt4 key购买 nike

我有一个程序,其中 pushbutton 上的 SelectionEvent 监听器激活一个线程。

在此线程执行期间,按钮需要保持灰色且不可单击(以便不运行相关线程的多个副本),然后返回到正常的可单击状态。

在SWT框架内,我该如何做到这一点?

这是我当前拥有的代码(“ok”是有问题的 SWT 按钮):

    ok.addSelectionListener(new SelectionListener() {
public void greyOut() {
ok.setEnabled(false);
}
public void ungray() {
ok.setEnabled(false);
}
public void widgetDefaultSelected(SelectionEvent e) {}
public void widgetSelected(SelectionEvent ef) {
ok.setGrayed(true);
Thread t = new Thread(new Runnable() {
public void run() {
greyOut();
connectAndDownloadReport();
try {
System.setOut(oldOut);
ArrayList<Devices> allDevs = parseFile();
createCSV(allDevs);

}

catch(Exception e) {
e.printStackTrace();
e.getMessage();
System.out.close();
System.exit(0);
}
finally {
ungray();
}

}
});
}});

最佳答案

调用ok.setEnabled(false)将禁用该按钮,但您必须在 UI 线程中执行此操作。因此,在后台线程中,您必须使用 Display.asyncExec运行该部分代码:

Display.getDefault().asyncExec(() -> ok.setEnabled(false));

关于Java SWT : How to make a button unclickable while a separate thread is running,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49805758/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com