gpt4 book ai didi

java - 如何避免 org.eclipse.swt.SWTException : Invalid thread access

转载 作者:行者123 更新时间:2023-11-30 09:01:09 25 4
gpt4 key购买 nike

我有一个像这样开始的 SWT 按钮的监听器:

button1.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
Runnable runnable = new Runnable() {
public void run() {
String nextValue = text1.getText();
...

我需要 UI 中名为 text1 的文本字段的当前值,但最后一行 getText() 失败并显示

org.eclipse.swt.SWTException: 无效线程访问

我知道 syncExec/asyncExec(我的代码有多个),但 StackOverflow 上的其他线程建议您仅在想要更新 UI 中的字段时才需要使用它。在监听器中读取 UI 字段的正确方法是什么?

最佳答案

这里有一些代码片段演示了如何同步和异步运行代码(从 Lars Vogel's 非常有用的网站复制)。

// Update the user interface asynchronously
Display.getDefault().asyncExec(new Runnable() {
public void run() {
// ... do any work that updates the screen ...
}
});

// Update the user interface synchronously

Display.getDefault().syncExec(new Runnable() {
public void run() {
// do any work that updates the screen ...
// remember to check if the widget
// still exists
// might happen if the part was closed
}
});

关于java - 如何避免 org.eclipse.swt.SWTException : Invalid thread access,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26491741/

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