Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.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-JPanel与Canvas_Java_Swing_Canvas_Jpanel_Awt - Fatal编程技术网

Java-JPanel与Canvas

Java-JPanel与Canvas,java,swing,canvas,jpanel,awt,Java,Swing,Canvas,Jpanel,Awt,我正在学习java,并计划用swing制作一个游戏,但我有几个问题: 我知道我不应该混合使用awt和swing,但我读到canvas有活动的render和swing元素pasive render(你必须等待操作系统调用paint()或paintComponent()),对于游戏来说,最好使用active。使用canvas优于JPanel,或者JPanel优于canvas有什么好处 扩展其中一个类(Canvas或JPanel类)和实例化它们有什么好处 Canvas.getBufferStrateg

我正在学习java,并计划用swing制作一个游戏,但我有几个问题:

  • 我知道我不应该混合使用awt和swing,但我读到canvas有活动的render和swing元素pasive render(你必须等待操作系统调用
    paint()
    paintComponent()
    ),对于游戏来说,最好使用active。使用canvas优于JPanel,或者JPanel优于canvas有什么好处
  • 扩展其中一个类(Canvas或JPanel类)和实例化它们有什么好处
  • Canvas.getBufferStrategy()
    JFrame.getBufferStrategy
    之间有什么区别
  • 最好将bufferStrategy放入JPanel或JComponent类中,以模拟活动渲染(我知道swing组件是隐式双缓冲的)

  • 我搜索了这些问题,但没有找到好的答案

    如果你计划复杂的游戏,我建议不要使用java2D或canvas。对于乒乓球之类的小游戏来说,java2D是可以的,但是你会注意到,在更复杂的游戏中,要实现恒定的每秒60帧的速度是非常困难的

    如果您计划了一个更复杂的游戏:


    优点是您可以开发独立于平台的(桌面、Android、IOS、Webbrowser)

    我自己的经验是,定制的
    JPanel
    适合大多数动画(例如简单游戏)。如果你真的想认真对待屏幕的控制,你最好看看..首先我想用“纯”java开发游戏,但是LibGDX是一个很好的游戏开发解决方案,谢谢。