为什么这么多Java教科书都有Swing示例,而没有';不使用runnable?

为什么这么多Java教科书都有Swing示例,而没有';不使用runnable?,java,swing,runnable,Java,Swing,Runnable,我是新来的,对爪哇来说。我怀疑这个问题对这个地区来说太开放了,但就我的生活而言,我找不到一个更合适的地方。我在网上搜索时也没有发现任何东西 我有很多Java教科书,大部分都是比较旧的版本,购买起来比较便宜。对于其中许多示例,Swing示例不使用runnable接口和事件调度队列。(例如,Deitel和Deitel于2007年编写的“如何编程Java,第7版”,或Barry Burd于2011年编写的“Java for Dummies,第5版”,或罗杰斯·卡德黑德于2012年编写的“Sams 24

我是新来的,对爪哇来说。我怀疑这个问题对这个地区来说太开放了,但就我的生活而言,我找不到一个更合适的地方。我在网上搜索时也没有发现任何东西

我有很多Java教科书,大部分都是比较旧的版本,购买起来比较便宜。对于其中许多示例,Swing示例不使用runnable接口和事件调度队列。(例如,Deitel和Deitel于2007年编写的“如何编程Java,第7版”,或Barry Burd于2011年编写的“Java for Dummies,第5版”,或罗杰斯·卡德黑德于2012年编写的“Sams 24小时自学Java,第6版”)

有人能告诉我为什么吗?
是为了简单吗?
从什么时候开始,推荐使用事件调度队列(从JDK 1.0开始,runnable就可用了)?

还是别的什么?

随着时间的推移,Sun改变了建议。早些时候,每个人都认为可以将Swing组件从事件调度线程(EDT)实例化


参见

1)编程习惯随时间而变化;2) 在HtPJ第七版的旧时代,他们做了什么?我只能猜测。简单Swing GUI的工作—无论GUI是否使用EventQueue或SwingUtilities invokeLater方法在事件调度线程上启动。当你开始使用额外的线程时,比如动画,缺少调用器会导致难以诊断的问题。从Java4开始,我就一直在使用invokeLater,所以从那时起,它一直是推荐的做法。HtPJ第7版早在2007年就已经编写好了。平心而论,它确实提到了事件调度队列,但直到1059页,也就是swing引入之后。对于前面的swing章节,一个类将扩展JFrame,然后一个测试类将创建并设置一个扩展JFrame类的实例。仅当您希望重写类中的一个或多个方法时,才应扩展Java类。我理解不需要一次引入太多Java概念,但大多数人都无法从简单的ExtendJFrame中获得指导。我怀疑我写得不清楚是因为我缺乏经验。对于HtPJ 7th中的Swing示例,未使用Runnable/event dispatch queue,GUI对象只是在常规的main方法中实例化。但是,即使是Oracle Java教程中的简单示例,也使用Runnable。出于某种原因,当我尝试阅读本书中的示例时,这让我感到厌烦。谢谢,这很有趣。