我听过很多次不要混用Swing
和AWT
(重量级和轻量级)组件。
但是,如果我只有一个组件在JFrame
上显示一个组件,那该怎么办呢?到目前为止,我看到的主要内容是AWT
组件总是在顶部,但正如我之前所说,如果我只在JFrame
上有一个组件什么是重要的?
编辑:我需要做的就是使用AWT
Canvas
进行绘画。我在游戏中使用它,所以我需要一个BufferStrategy
。
所以我想我的问题是:即使您只在AWT
上同时显示一个组件,是否还有令人信服的理由不混合Swing
和JFrame
组件?
,我已经让它在Canvas
只有一个JFrame
就可以正常工作了,那么迁移到Swing有什么好处?
提前感谢: - )
答案 0 :(得分:4)
你必须使用AWT组件进行高性能绘画,多媒体或从OpenGL,CAD / CAM e.i中导出图形。
只有当你有非常重要的理由时,你才可以将AWT组件与Swing JComponents一起使用,例如来自Swing的点或事件是BugParade中的bug或常规错误
我建议不要将AWT与Swing混合,反之亦然
AWT组件的优势,它们基于来自Native OS的资源
AWT组件的缺点,他们的发展在上个世纪结束了
Swing基于或继承了AWT组件及其方法
答案 1 :(得分:3)
..
JPanel
是Canvas
的最佳Swing替代品吗?
是的,但覆盖paintComponent(Graphics)
而不是paint(Graphics)
答案 2 :(得分:2)
与大多数决定一样,这对您来说至关重要。混合AWT和Swing有性能上的缺点,如果你试图使用主题,你也会遇到问题。话虽这么说,如果你需要它,没有理由不这样做。
Swing是建立在AWT之上的,是的,它更新,更快,更好,但它仍然可以访问AWT所拥有的一切。
这里真正的问题应该是如果有办法在不使用AWT的情况下做你需要做的事情?给我们一些关于你需要做什么的指示,也许有办法用Swing来做。