我是 java noob 程序员,我遇到了 SWT Exception Invalid thread access 的问题,我已经找到了,我发现当你尝试从不是 UI 线程的线程中对接口项进行操作时,就会发生这种情况。但我不知道如何解决它。
问题: 我有 4 个课程:
- notify - 创建显示通知的 swt 窗口
- 主线程 - 从网上下载内容并使用通知类显示通知
- 窗口 - 它显示托盘图标,设置,它是主类 - 它启动主线程
- 在第二个 swt 窗口中显示通知的类。
问题是它因无效的线程访问而崩溃。我不知道如何显示两个 swt 窗口(完全不同的类)
该应用程序下载网页,解析它并获取我想要的信息。然后使用类通知它显示通知。我添加了 SWT Window 类Window,它显示托盘图标,还有一些设置,它也是主类,并且该类运行ZadaneReader线程。第一个问题:我应该以其他方式添加 SWT 窗口(主要目标是:托盘图标和设置)吗?
我的应用程序包含以下类:
- ZadaneReader - 它下载网页,解析它并使用类Notify,它显示通知
- 通知 - 该类以 2 种方式显示通知:a)使用 exec notify-send(但它仅是 Ubuntu)和 b)它创建对象 UniNotifyWindow,这是显示通知的第二个 SWT 窗口
- UniNotifyWindow - 显示自己的通知的 swt 窗口
- 窗口 - 设置、托盘图标、启动线程时的主类和 ZadaneReader 线程
目前:当我不使用 UniNotifyWindow或者我不使用 Window 时它可以工作(使用测试器类启动 Zadane 线程)。
我想这是一个愚蠢的问题,我犯了很多错误,但我希望你不会责怪我,但如果你能告诉我我做错了什么,我会很高兴。
来源: https ://docs.google.com/open?id=0B5VL4J_7HrgaTkt4a1Q2VVQxZEE