2017-03-11 20 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に設定します。

ご迷惑をおかけして申し訳ありません。

関連する問題