title: Java - Won't display a black screen
body: <p>My Java program won't display a black screen when I tell it to. I can just see a greyish window with 0 FPS.</p>
  
  <p>Here is my code: </p>
  
  <pre><code>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();
      }
  
  }
  </code></pre>