相关疑难解决方法(0)

Java事件派遣线程说明

我最近开始学习和探索Java中GUI编程的基础知识.

经过一段时间的编程后,我只完成了后端工作或工作,因此最接近用户界面的是命令控制台(我知道这令人尴尬).

我正在使用Swing,据我所知,这意味着我也使用AWT.

我的问题是基于这段代码:

java.awt.EventQueue.invokeLater(new Runnable() {
    public void run() {
        new frame.setVisible(true);
    }
} );
Run Code Online (Sandbox Code Playgroud)

我一直在研究这一段时间,因为我想完全理解这种奇怪的代码和所遇到的术语"事件派发线程"多次.如果我错了,但正如我所理解的那样纠正我; 它与使用多个线程以及Java Swing如何解释这些线程有关.我也收集到上面的代码用于确保所有线程在创建窗口之前是"安全的",因此invokeLater?

我读过:

"你只能从Event-Dispatching Thread中调用对框架进行操作的方法"

并且只有在某些情况下才能调用main方法对框架进行操作的方法.

有人可以向我澄清一下Event-Dispatching Thread到底是什么吗?

它如何与多个执行线程相关,以及如何从main方法调用这些线程是不安全的?为什么我们需要这个invokeLater?

我们不能像其他任何对象一样创建窗口吗?

我在研究中遇到了一些障碍,因为我没有抓住这些关系和想法.

一个侧面说明,我喜欢将我的知识建立在深入理解的基础上,因为我相信这会带来最好的整体结果,并因此成为最好的计划.如果我深入了解某些东西是如何工作的,那么你可以有效地使用提示和调整,而不仅仅是将它们重新编入代码中,所以请不要害怕给我一些额外的深入解释并扩展我的知识.

谢谢.

java swing awt event-dispatch-thread

54
推荐指数
2
解决办法
3万
查看次数

如何用自己的实现替换AWT EventQueue

为了调试Swing应用程序中的奇怪行为,我想用我自己的实现替换AWT EventQueue.

这可能吗?怎么样?

万一你有兴趣:

  • 实现将是一个围绕正常Eventqueue的简单包装器,进行一些日志记录.

  • 我想要调试的问题是一个TableCellEditor,它可以在一个小的演示应用程序中正常工作,但是当放入真正的应用程序时,由于某些事件,会立即调用stopCellEditing.我希望能够访问该活动,以便了解它的来源.

java swing eventqueue

22
推荐指数
2
解决办法
7255
查看次数

多事件调度线程

我是Java Swing的新手,我的问题与Event Queues和Dispatch threads有关.

我读到每个AppContext实例可以有多个事件队列.同样,这意味着每个AppContext事件队列都有自己的事件派发线程.

java swing awt event-dispatch-thread

6
推荐指数
1
解决办法
1443
查看次数

标签 统计

java ×3

swing ×3

awt ×2

event-dispatch-thread ×2

eventqueue ×1