我正在研究为生物分析工具开发 Java GUI。我的问题是,我可以在同一个模型 View 控制设计模式下同时使用 AWT 和 SWING 库吗?或者,它们是两个以不同方式控制的图书馆吗?我想知道是否可以将它们放在同一屋檐下,以便重用用这两个库编写的现有代码。非常感谢您的宝贵时间。
最佳答案
Swing 建立在 AWT 之上,您可以混合使用 Swing 和 AWT,从技术上讲它可以工作,但有一些限制:
重量级组件与轻量级组件:AWT 中的组件是重量级的 - 它们对应于 native 操作系统窗口。这意味着所有 AWT 组件都出现在同级 Swing 组件之上。 (比如把一个awt List和一个swing JList放在同一个容器里,List会一直出现在JList上面。)
外观和感觉:AWT 组件看起来和感觉是原生的,因为它们是原生组件。 Swing 组件具有可插入的观感,它定义了它们的外观和行为。如果您选择 L&F 来匹配 native 平台,这些组件只是 native 外观的“模仿”,并且可能与 AWT 对应物有不同的行为。 (例如 JButton 与 awt 按钮。)
出于这些原因,明智的做法是只使用一个 UI 库,大概是 Swing。
编辑:JDK 6(更新 12)提供了重量级和轻量级组件的无缝集成,因此混合将无缝工作。所以第一点不再正确 - 但两个 UI 工具包之间的外观和感觉不一致仍然存在。
关于java - AWT XOR SWING 在一个应用程序中一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5685424/