Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JFrame缓冲策略与Canvas缓冲策略_Java_Swing_Canvas_Jframe_Awt - Fatal编程技术网

Java JFrame缓冲策略与Canvas缓冲策略

Java JFrame缓冲策略与Canvas缓冲策略,java,swing,canvas,jframe,awt,Java,Swing,Canvas,Jframe,Awt,从类和类中可以看出,与BufferStrategy(在Canvas和JFrame中)相关的方法不是来自同一父级。 例如,JFrame的createBufferStrategy由Window继承,它不是Canvas的父级,而Canvas实现自己的父级。实际上,他们最后的共同祖先是组件,它没有这个方法 因此,我想知道这两者的功能是否相同,以及在将画布的createBufferStrategy/getBufferStrategy替换为窗口的createBufferStrategy时,我的程序的行为是否

从类和类中可以看出,与
BufferStrategy
(在
Canvas
JFrame
中)相关的方法不是来自同一父级。 例如,JFrame的
createBufferStrategy
Window
继承,它不是
Canvas
的父级,而
Canvas
实现自己的父级。实际上,他们最后的共同祖先是
组件
,它没有这个方法

因此,我想知道这两者的功能是否相同,以及在将
画布的
createBufferStrategy
/
getBufferStrategy
替换为
窗口的
createBufferStrategy
时,我的程序的行为是否相同

我决定做这个“替换动作”,因为我昨天读到
JPanel
的速度不慢于
Canvas
这里:

所以我基本上想现在添加
JPanel
而不是
Canvas


当我开始编码时,我的第一个选择是
Canvas
,因为:
。因此,您可以在那里或多或少地看到我的代码,尽管我做了一些更改,因为它们与本主题无关。

不久前,Canvas和Window继承了组件中的
createBufferStrategy()
getBufferStrategy()
方法,但现在oracle已经对其进行了更改,因为他们只需要Window和Canvas类(及其子类)具有这些方法,而不是其他组件子类


因此,是的,Canvas和Window中的
createBufferStrategy()
getBufferStrategy()
方法之间没有区别,您可以使用
canvaObject.getBufferStrategy()
JFrameObject.getBufferStrategy()

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

如果您使用JFrame,请使用JPanel。AWT比较将在一个框架和一块画布之间。