2017-03-11 7 views
0

Ich habe ein Problem, wo mein JFrame ständig weiß und schwarz blinkt, aber ich stelle nur die Farbe auf schwarz. Ich denke, es hat etwas mit dem while (running) {} Bit zu tun.JFrame Bildschirm blinkt weiß und schwarz

Es wird nur für immer schwarz und schwarz, bis ich es schließe. Ich weiß wirklich nicht, was vor sich geht. Ich habe gerade angefangen, JFrame zu benutzen, also bin ich mir sicher, dass ich nur einen falschen Code eingegeben habe.

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

Bitte geben Sie Ihren Code hier ein. Ich weiß, dass es in der Verbindung ist, aber sie sind die Regeln. – byxor

+0

@byxor es sagt mein Beitrag ist hauptsächlich Code, also kann ich das nicht tun ... – GoldShovel

+0

Ja, es gibt ein Ding namens [MCVE] (http://Stackoverflow.com/help/mcve), das Sie versuchen sollten, zu liefern . Diese "Do not spam code" -Regel hilft, die Qualität von Fragen zu verbessern. – byxor

Antwort

1

es selbst gelöst ... habe ich die Methode drawRect() Und ich lesen Sie die Dokumentation Seite und es sagt, dass es nur den Umriss des Rechtecks ​​zieht .. Also ich habe gerade drawRect() Auch änderte ich der Puffer zu 2.

Sorry für verschwenden Sie Ihre Zeit.

Verwandte Themen