2

Canvas类和类可以看出,与(的和的)JFrame相关的方法并不是来自同一个父级。例如,JFrame 被继承,它不是 的父级,而实现了自己的。实际上,他们最后的共同祖先是没有这种方法的。BufferStrategyCanvasJFramecreateBufferStrategyWindowCanvasCanvasComponent

所以我想知道两者的功能是否相同,以及将createBufferStrategy/getBufferStrategy的/Canvas替换为.createBufferStrategygetBufferStrategyWindow

我决定做这个“替换动作”,因为我昨天读到JPanel的并不比Canvas这里慢:Canvas 和 InputMap

所以我基本上想添加JPanel而不是Canvas现在。
当我开始编码时,我的第一选择是Canvas因为这个:
youtube 上的教程。所以你可以在那里或多或少地看到我的代码,即使我做了一些更改,因为它们与这个主题无关。

4

2 回答 2

0

前段时间,Canvas 和 Window 继承了Component 的createBufferStrategy()getBufferStrategy()方法,但现在 oracle 改变了它,因为他们只希望 Window 和 Canvas 类(及其子类)拥有这些方法,而不是其他 COMponent 子类。

createBufferStrategy()所以是的,Canvas 和 Window 的和方法没有区别getBufferStrategy(),你可以使用CanvasObject.getBufferStrategy()JFrameObject.getBufferStrategy()

于 2015-01-11T12:10:10.533 回答
0

在创建 GUI 时,首先在 Java 中,通常建议使用 swing 而不是 AWT。要回答您的问题,没有为 JFrame 或 JPanel 创建缓冲区策略将无法按照您希望的方式运行,我只是尝试过它,但实际上它似乎根本不起作用。所有的摆动组件都已经是双缓冲的,因此没有必要创建缓冲策略。我浏览了您在该链接中提供的视频,我可以看到您将如何使用它。我建议查看页面上的第一个答案,由于某种原因不是例外答案,但它非常有帮助。

于 2016-09-30T23:52:05.610 回答