java - AWT XOR SWING 在一个应用程序中一起使用?

标签 java model-view-controller swing awt

我正在研究为生物分析工具开发 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/

相关文章:

Java 检查字符串中是否添加了某些内容

ios - 将对象/结构传递给 UITableViewCell,或在 configureCell :atIndexPath:? 中配置单元格

java - 在本地机器上为配置单元编写单元测试

java - sendsignal.exe 是做什么的?

java - JSF 中表单、数据表等的最佳实践

php - 如何在 PHP 中从头开始实现 MVC?

java - 为什么 java swing 不允许从 ExecutorService 线程进行更改

java - 在线程之间共享对象的最佳方式?

java - 想要取消选择表格单元格

java - new Integer(123)、Integer.valueOf(123) 和 just 123 之间的区别