【问题标题】:How come so many Java textbooks have Swing examples that don't use runnable?为什么这么多 Java 教科书都有不使用 runnable 的 Swing 示例?
【发布时间】:2016-03-02 17:04:58
【问题描述】:

我是新来的,也是 Java 的新手。我怀疑这个问题对于这个领域来说太开放了,但对于我的生活,我找不到更合适的地方。我在互联网上搜索时也没有出现任何东西。

我有许多 Java 教科书,大部分是较旧的版本,购买成本较低。对于他们中的许多人来说,Swing 示例不使用可运行接口和事件调度队列。 (例如,“How to Program Java,第 7 版”,Deitel 和 Deitel,2007 年,或“Java for Dummies,第 5 版”,Barry Burd,2011 年,或“Sams Teach Yourself Java in 24 Hours, 6th edition”,罗杰斯卡登黑德,2012)。

谁能告诉我这是为什么?
是为了简单吗?
从什么时候开始推荐使用事件调度队列(从 JDK 1.0 开始提供可运行的队列)?
还是别的什么?

【问题讨论】:

  • 1) 编程习语随时间而变化; 2) 他们在 HtPJ 第 7 版的旧时代做了什么?
  • 我只能推测。简单 Swing GUI 的工作,无论 GUI 是否使用 EventQueue 或 SwingUtilities invokeLater 方法在 Event Dispatch 线程上启动。当你开始使用额外的线程时,比如动画,没有 invokeLater 会导致难以诊断问题。我从 Java 4 开始就一直在使用 invokeLater,所以从那时起就推荐使用它。
  • HtPJ 第 7 版早在 2007 年就写好了。平心而论,它确实提到了事件调度队列,但直到第 1059 页才提到,那是在引入 swing 之后。对于前面的摇摆章节,一个类将扩展 JFrame,然后一个测试类将创建并设置一个扩展 JFrame 类的实例。
  • 这是一个不同的问题。只有当您想要覆盖类中的一个或多个方法时,才应该扩展 Java 类。我理解一次不需要介绍太多 Java 概念的必要性,但大多数人从来没有得到超出简单扩展 JFrame 的说明。
  • 我在回答安迪·特纳的问题。我怀疑由于我缺乏经验,我没有写清楚。对于 HtPJ 7th 中的 Swing 示例,未使用 Runnable/事件调度队列,GUI 对象仅在常规 main 方法中实例化。但是,即使是 Oracle Java 教程中的简单示例,也使用了 Runnable。出于某种原因,当我尝试阅读书中的示例时,这让我很恼火。

标签: java swing runnable


【解决方案1】:

Well Sun 随着时间的推移改变了这些建议。之前大家都认为可以从事件调度线程 (EDT) 中实例化 Swing 组件

Will the real Swing Single Threading Rule please stand up?

【讨论】:

  • 谢谢,这很有趣。
猜你喜欢
  • 2015-05-16
  • 1970-01-01
  • 1970-01-01
  • 2011-04-28
  • 1970-01-01
  • 1970-01-01
  • 2019-08-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多