2015-07-06 3 views
0

Моя программа Java не отображает черный экран, когда я говорю. Я могу просто увидеть серое окно с 0 FPS.Java - не отображает черный экран

Вот мой код:

package com.none.rain; 

import java.awt.Canvas; 
import java.awt.Color; 
import java.awt.Dimension; 
import java.awt.Graphics; 
import java.awt.image.BufferStrategy; 

import javax.swing.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; 

    private boolean running = false; 
    private JFrame frame; 
    private Thread thread; 

    public Game() { 
     Dimension size = new Dimension(width*scale, height*scale); 
     setPreferredSize(size); 

     frame = new JFrame(); 
    } 

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

    public synchronized void stop() { 

     try { 
      thread.join(); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
    } 

    public void run() { 
     while (running) { 

     } 
    } 

    public void update() { 

    } 

    public void render() { 
     BufferStrategy bs = getBufferStrategy(); 
     if (bs == null) { 
      createBufferStrategy(3); 
      return; 
     } 

     Graphics g = bs.getDrawGraphics(); 
     g.setColor(Color.BLACK); 
     g.fillRect(0, 0, getWidth(), getHeight()); 
     g.dispose(); 
     bs.show(); 
    } 

    public static void main(String[] args) { 
     Game game = new Game(); 
     game.frame.setResizable(false); 
     game.frame.setTitle("Rain"); 
     game.frame.add(game); 
     game.frame.pack(); 
     game.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     game.frame.setLocationRelativeTo(null); 
     game.frame.setVisible(true); 

     game.start(); 
    } 

} 

ответ

0

Создание отображения черного является то, что вы делаете в методе render(), но вы никогда не называли.

Если взять код и добавить вызов render() в методе run() я получаю кадр с черным фоном:

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

Ооо, суммарно забыл добавить, что! Благодаря! –

Смежные вопросы