2017-03-11 42 views
0

我遇到问题,我的JFrame不断闪烁白色和黑色,但我只将颜色设置为黑色。我认为它与while(running){}位有关。JFrame屏幕闪烁白色和黑色

它只是永远变成白色和黑色,直到我关闭它。我真的不知道发生了什么事。我只是开始使用JFrame,所以我确信我只是放了一些错误的代码。

public class Game extends Canvas implements Runnable { 

    private static final long serialVersionUID = 1L; 

    public static int width = 300; 
    public static int height = width/16 * 9; 
    public static int scale = 3; 
    public static boolean running = false; 

    private Thread thread; 

    private JFrame frame; 

    public Game() { 
     Dimension window = new Dimension(width * scale, height * scale); 
     setPreferredSize(window); 
     frame = new JFrame(); 
    } 

    public synchronized void start() { 
     running = true; 
     thread = new Thread(this, "Display"); 
     thread.start(); 
    } 

    public synchronized void stop() { 
     try { 
      running = false; 
      thread.join(); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
    } 

    public void run() { 
     while (running) { 
      render(); 
     } 
    } 

    public void update() { 

    } 

    public void render() { 
     BufferStrategy buffer = getBufferStrategy(); 

     if (buffer == null) { 
      createBufferStrategy(3); 
      return; 
     } 

     Graphics g = buffer.getDrawGraphics(); 

     g.setColor(Color.BLACK); 
     g.drawRect(0, 0, getWidth(), getHeight()); 

     g.dispose(); 
     buffer.show(); 
    } 

    public static void main(String[] args) { 
     Game game = new Game(); 

     game.frame.setResizable(false); 
     game.frame.setTitle("Game"); 
     game.frame.add(game); 
     game.frame.pack(); 
     game.frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
     game.frame.setLocationRelativeTo(null); 
     game.frame.setVisible(true); 

     game.start(); 
    } 
} 
+0

请在这里发布您的代码。我知道它在链接中,但它们是规则。 – byxor

+0

@byxor它说我的帖子主要是代码,所以我不能这样做... – GoldShovel

+0

是啊,有一种叫做[MCVE](http://stackoverflow.com/help/mcve)的东西,你应该试着提供。这个“不垃圾邮件代码”规则有助于提高问题的质量。 – byxor

回答

1

解决它自己...我使用的方法的drawRect()和我阅读文档,网页和它说,它只能绘制矩形的轮廓。所以我只是做的drawRect() 我也改变缓冲区为2.

对不起,浪费你的时间。