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比较将在一个框架和一块画布之间。