このSWTExceptionを取り除こうとしています:無効なスレッドアクセスです。 JButtonのActionListener内から生成されます。究極の目的は...無効なスレッドアクセス:AWTのActionListenerのSWT
private static final Display display = Display.getDefault();
// Fired from JButton:
class ShowBrowserAction implements java.awt.event.ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
// Place-holder UI Update...
display.asyncExec(new Runnable() {
public void run() {
System.out.println("Async task run");
}
});
// Blocking until UI element is done...
while (!display.isDisposed()) {
// Always gives a thread access error, but still calls async event:
if (!display.readAndDispatch() )
display.sleep();
}
}
}
思考を、ボタンがブラウザウィンドウを開くことですURLに移動してからURLを開く]ダイアログに戻されますか?
私はreadAndDispatchをtry/catchで囲むことができ、実際は完全にうまくいくようです。しかし、それは不正行為のように思われ、私は後で私に襲われると思います。 –
Display.getDefault()の代わりに新しいDisplay()の表示インスタンスを変更すると、エラーが消えてしまうようです。しかし、私はそれがなぜ起こるのか理解していない。 Display.getCurrent()は "null"を返します。アクティブなDisplayは現在のスレッドに既に存在していません。 –