在JFrame Java中闪烁

I.e*_*yed 1 java concurrency swing java-2d

大家好,我正在做一个线程来更新JFrame上的球,所以我重新绘制屏幕......然后将球更新到它的位置......然后再次绘制屏幕......画出球和同样的周期......这是代码

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
   Thread t = new Thread()
   {
     public void run()
     {
         while(true)
         {
             repaint();
             b2.update(ob,2);
             b2.paint(ob.getGraphics());

             b2.setT(b2.getT() + 1);
             try {
                 Thread.sleep(50);
             } catch (InterruptedException ex) {
                 System.out.println("Error in Sleeping");
             }

         }
     }
   };

   t.start();
}
Run Code Online (Sandbox Code Playgroud)

但问题是我没有看到球...屏幕的油漆总是覆盖球,球就像在Jframe下面.

Rob*_*bin 6

如果你想在Swing中有动画,推荐使用的类是javax.swing.Timer.此类允许您定期对事件调度线程执行操作.

  • 您也可以使用SwingWorker. (2认同)