栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

人们为什么在事件队列上运行Java GUI

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

人们为什么在事件队列上运行Java GUI

在Java的生命周期中,用于控制需要在EDT上执行什么操作的规则(我看到的是“
EDT”比“事件队列”更常用)。而且每次“规则”更改时,Sun建议在EDT上进行越来越多的“ GUI相关”工作。

人们为什么在EDT上运行Java GUI?

  • 因为官方指南建议这样做。

  • 因为这样做将有助于避免许多与GUI相关的线程错误。

请注意,这不是很众所周知,因为Swing本身有一些错误,所以EDT实际上 确实 偶尔
崩溃。每个不平凡的Swing应用程序都使用具有错误的Swing API,因此EDT有时会失效。

您永远不会看到它,这也不是引起关注的原因,因为当EDT死后,它会自动重启。

基本上,在EDT上进行所有与GUI相关的工作,并在EDT之外进行所有冗长的操作(以免阻塞EDT)。

*您要求 *EDIT编辑
一个示例,以了解如何在EDT外部进行冗长的操作。有几种方法可以做到这一点。在最简单的情况下,您只需从EDT创建并启动新线程。这是一个示例:当用户单击按钮时,将调用侦听器回调,我们知道这将在EDT上发生…

    JButton jb = ...    jb.addActionListener( new ActionListener() {        public void actionPerformed( final ActionEvent e ) {          final Thread t = new Thread( new Runnable() {public void run() {  // this shall get executed, after start() has been called, outside the EDT      }});t.start();        }    } );

对于更复杂的示例,您想阅读 SwingWorker 等。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/453388.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号