为什么要导入javax.swing。*而不是java.swing。*

我不明白为什么几个导入包中“x”附加了“x”。 是什么原因? 不能只是java.swing.*像其他java.io.*

Swing最初是Java的扩展 – 一个可单独下载的库。 它成为Java 1.2中“主要”JRE的一部分。 如果一个单独的库声称一个java。*包,那将是奇怪的,因此目前的情况。 还有很多其他扩展也有类似的故事。

关于Swing的维基百科文章提供了有关其历史的更多信息。

来自Core Java 2:
替代文字http://bks5.books.google.fr/books?id=W6bomXWB-TYC&printsec=frontcover&img=1&zoom=5&edge=curl&sig=ACfU3U3IeRSfENUVokGf-d9GUZZBU-tYMQ

名称javax表示Java扩展包,而不是核心包。 Swing类确实是Java 1.1的扩展。 因为Swing类不是核心层次结构的一部分,所以可以将Swing类加载到兼容Java 1.1的浏览器中。(浏览器的安全管理器不允许添加任何以“ java. ”开头的包。)在Java 2平台上,Swing包不再是扩展,而是核心层次结构的一部分。 任何与Java 2兼容的Java实现都必须提供Swing类。 然而,为了与Java 1.1代码兼容,javax名称仍然存在。 (实际上,Swing包最初是以com.sun.java.swing开头的,然后在早期的Java 2 beta版本中短暂地转移到了java.awt.swing ,然后在Java 2 beta版本的后期回到了com.sun.java.swing 。版本,经过Java程序员的抗议,在javax.swing找到了它的最终安放位置。)

由于历史原因和向后兼容性。 之前java 1.2 swing作为一个单独的包从java分发(因此javax作为扩展)。

当swing成为标准java-distribution软件包的一部分时,保留了名称以便向后兼容。 更多信息在维基百科文章中

x是因为它们是扩展名。 在java的1.1版本中没有swing,当它被添加时,他们决定将它命名为:javax

有许多具有相似历史的包。