- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试使用 Display.asyncExec() 方法在生成 SWT 列表小部件时将状态更新打印到它们,而不是在程序完成时将更新转储到列表中。我不断收到 java.lang.NullPointerException。我不明白我做错了什么。该程序工作正常,直到我尝试使用单独的线程并使用 Display.asyncExec 方法。任何建议表示赞赏。
错误:“异常:从线程“Thread-0”中的 UncaughtExceptionHandler 抛出 java.lang.NullPointerException”
我的 CustomOutputStream 类:
import java.io.IOException;
import java.io.OutputStream;
import org.eclipse.swt.widgets.List;
/**
This class extends from OutputStream to redirect output to a SWT List widget
**/
public class CustomOutputStream extends OutputStream {
private List list;
private StringBuilder sb;
private Runnable runnable;
public CustomOutputStream(List list) {
this.list = list;
sb = new StringBuilder();
}
@Override
public void write(int b) {
// redirects data to the text area upon newline character
if(String.valueOf((char)b).equals("\n") ){
list.getDisplay().asyncExec(new Runnable() {
public void run() {
if(!list.isDisposed() ) {
// redirects data to the text area
list.add(sb.toString());
// scrolls the text area to the end of data
list.select(list.getItemCount() - 1);
list.showSelection();
list.deselectAll();
}
}
});
runnable.run();
sb.setLength(0);
}
else{
sb.append(String.valueOf((char)b));
}
}
}
在我的 DVS 类(class)中:
public class DVS implements Runnable{
private PrintStream log;
// constructor
public DVS( CustomOutputStream LOG) {
log = new PrintStream(LOG);
run();
}
public void run() {
System.setOut(log);
System.setErr(log);
/**
code that invokes System.out.println() ....
**/
}
}
在我的主课中:
Public List list = new List(shell, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
Public CustomOutputStream log = new CustomOutputStream(list);
DVS algo = new DVS(log);
Thread thread = new Thread(algo);
thread.start();
最佳答案
我没有看到任何初始化 runnable
的地方,因此当您尝试调用 runnable.run()
时,它将为 null
。
public class CustomOutputStream extends OutputStream {
// ...
private Runnable runnable;
public CustomOutputStream(List list) {
this.list = list;
sb = new StringBuilder();
}
@Override
public void write(int b) {
if(String.valueOf((char)b).equals("\n") ){
// ...
runnable.run();
// ...
}
// ...
}
}
关于java - SWT - asyncExec 将输出定向到列表小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32875717/
我试图在阅读 Excel 文件时显示进度。我共享一个包含最大行号和最后读取的行号的对象。每 150 行,我将值保存在对象中,然后将其等待,然后停止读取,直到对象解锁。 在我的对话框窗口中,我尝试使用带
有一个“下一个”按钮,当我在选择按钮的情况下按下键盘回车键时,按钮的 widgetSelected 事件被一次又一次地重复调用,然后执行超快的下一步。这正是我想要的行为,但只发生在键盘输入键时。 我希
我正在尝试使用 Display.asyncExec() 方法在生成 SWT 列表小部件时将状态更新打印到它们,而不是在程序完成时将更新转储到列表中。我不断收到 java.lang.NullPointe
这是我的代码: Display.getCurrent().asyncExec(new Runnable() { public void run() {
我有很多重复行的代码,如下所示。如何将此作为方法? Display.getDefault().asyncExec(new Runnable() { @Override public v
我正在使用 eclipse 的作业 API 将大任务作为作业运行,一旦任务完成,我将 boolean 变量设置为 true,如果该变量为 true,我将在 UI 线程中执行 WizardDialog。
我希望 Display.timerExec(int,Runnable)与 Display.asyncExec(Runnable) 大致相同但有指定的延迟。然而,似乎Display.timerExec只
即使将所有 SWT 代码包装在“Display.getDefault().asyncExec”中,我也无法更新我的 UI。 假设我有一个监听器,称为单击一个按钮。 Listener enterlisn
我正在编写 Eclipse 插件,经常遇到这样的情况:正在运行的作业需要暂停一小会儿,在 UI 线程上异步运行某些内容,然后恢复。 所以我的代码通常看起来像这样: Display display =
在我的 SWT GUI 中,我想要一个按钮来启 Action 业,并在运行该作业时更新一个文本框,以显示该作业的事件日志。但是,直到 asyncExec() 调用结束后,我的文本框才会更新。在下面的示
我正在使用 Eclipse RCP 和 Swing 开发一个项目。我看到两对方法 invokeLater()/invokeAndWait() 和 asyncExec()/syncExec() 被大量使
我有一个使用 SWT 作为工具包的 Java 应用程序,我已经厌倦了更新 GUI 元素所需的所有丑陋的样板代码。 只是为了将禁用的按钮设置为启用,我必须经历这样的事情: shell.getDispla
我有一个简单的 viewPart,它提供了一些文本字段来输入 selenium 测试的参数。填写这些字段后,用户可以开始测试,大约。需要运行 30-45 分钟。我希望我的 GUI 在此测试期间保持活跃
我的 Eclipse 工作台在抛出错误后关闭: Throwable during asyncExec Malformed class name 附上截图。 错误如下 !ENTRY org.scala-
有没有办法等待所有通过 asyncExec(...) 提交到 SWT UI 线程的 Runnable 完成? 背景: 我有一个长时间运行的操作,其中包括触发事件,这些事件又通过 Display 的 a
我是一名优秀的程序员,十分优秀!