Java backbuffer和动画

Java backbuffer和动画,java,swing,Java,Swing,我正在用java创建一个简单的2D游戏。到目前为止,我只在Windows API中用C++完成了这个操作。在java中,通过扩展JFrame并调用this.getContentPane().getGraphics(),我得到了一个Graphics对象。用这个物体,我把所有的东西都画到屏幕上,每一帧。这引发了几个问题: Backbuffer:我没有得到任何闪烁效果,而我没有使用Backbuffer(我直接在图形对象上绘制)。为什么会这样?java是否有内置的backbuffer之类的东西 动画:我

我正在用java创建一个简单的2D游戏。到目前为止,我只在Windows API中用C++完成了这个操作。在java中,通过扩展
JFrame
并调用
this.getContentPane().getGraphics()
,我得到了一个
Graphics
对象。用这个物体,我把所有的东西都画到屏幕上,每一帧。这引发了几个问题:

  • Backbuffer:我没有得到任何闪烁效果,而我没有使用Backbuffer(我直接在
    图形
    对象上绘制)。为什么会这样?java是否有内置的backbuffer之类的东西

  • 动画:我习惯于将所有动画部分放在单个精灵表中,如本例所示:

  • 现在,有人告诉我,你可以只画动画.gif,java将画这些独立于游戏循环。我已经试过了,但似乎不起作用。这是真的还是我也应该在java中使用这些sprite表


    谢谢

    是的,Java有一个双缓冲区渲染策略,可以打开和关闭


    关于动画GIF,我认为这是正确的,但您可能必须将它们放在适当的容器中(可能作为JLabel的图标?)。

    是的,Java有一种可以打开和关闭的双缓冲区渲染策略

    关于动画GIF,我认为这是正确的,但您可能必须将它们放在适当的容器中(可能作为JLabel的图标?)

    不要直接绘制到,因为您必须寻找允许绘制所有内容的工具,另一种选择是扩展
    JCompoments
    ,或
    JPanel

    对于Swing中的绘制,您必须查找
    paintComponent(Graphics g)
    ,而不是
    paint(Graphics g)
    ,因为这种方法在示例中使用了很多时间,并且在一些Java示例点上进行了编辑,这是一种错误的方法,可能存在缺陷

    不要直接绘制到,因为您必须寻找允许绘制所有内容的工具,另一种选择是扩展
    JCompoments
    ,或
    JPanel

    对于Swing中的绘制,您必须查找
    paintComponent(Graphics g)
    ,而不是
    paint(Graphics g)
    ,因为此方法在示例中使用了大量时间,并在一些Java示例盆上进行了编辑,这是一个错误的方法,可能缺少paint()和paintComponent()之间的区别第一个默认实现委托paintComponent()、paintBorder()和paintChildren(),因此,如果op的帧是无边界的,并且不用作swing容器,那么使用它没有任何问题paintComponent()和paintComponent()之间的区别在于第一个默认实现委托paintComponent(),paintBorder()和paintChildren(),因此,如果op的框架是无边界的,并且不用作swing容器,那么使用它没有什么问题
    getting a Graphics object by extending JFrame and 
    calling this.getContentPane().getGraphics().