3

我听说过很多次不要混合SwingAWT(重量级和轻量级)组件。

但是,如果我只想说,一次显示一个组件怎么办JFrame。到目前为止,我所看到的主要是AWT组件始终位于顶部,但正如我之前所说,如果我一次只有一个组件,JFrame那有什么关系呢?

编辑:我需要做的就是用AWT Canvas. 我正在将它用于游戏,所以我需要一个BufferStrategy.

所以我想我的问题是:即使你一次只显示一个组件,AWT是否还有一个令人信服的理由不混合组件?SwingJFrame

另外,我已经用 a Canvasin a让它工作得很好JFrame,那么迁移到 Swing 有什么好处?

提前致谢 :-)

4

3 回答 3

4
  • 您必须使用 AWT 组件进行高性能绘画、多媒体或矢量化来自 OpenGL、CAD/CAM ei 的图形

  • 仅当您有非常重要的原因时,您才能将 AWT 组件与 Swing JComponents 一起使用,例如来自 Swing 的 am 点或事件是 BugParade 中的错误或常规错误

  • 我建议不要将 AWT 与 Swing 混合使用,反之亦然

  • AWT 组件的优势它们基于来自本机操作系统的资源

  • AWT 组件的缺点是它们的开发在上个世纪就结束了

  • Swing 基于或继承 AWT 组件及其方法

于 2012-05-15T16:22:41.150 回答
3

..JPanel是最好的 Swing 替代品Canvas吗?

是的,但覆盖paintComponent(Graphics)而不是paint(Graphics)

于 2012-05-15T18:11:43.700 回答
2

与大多数决定一样,这实际上取决于对您来说什么是重要的。混合 AWT 和 Swing 存在性能缺陷,如果您尝试使用主题,也会遇到问题。话虽如此,如果这是您需要的,没有理由不这样做。

Swing 构建在 AWT 之上,是的,它更新、更快、更好,但它仍然可以访问 AWT 的所有内容。

这里真正的问题应该是是否有一种方法可以在不使用 AWT 的情况下完成您需要做的事情?给我们一些关于您需要做什么的指示,也许有一种方法可以使用 Swing 来完成。

于 2012-05-15T16:24:17.653 回答