title: java.awt.image.DataBufferByte cannot be cast to java.awt.image.DataBufferInt
body: <p>I have some errors atm while im coding with JAVA, I have been trying to fix this for along time, also trying to find oterh ppl who have same problem and fixed it but nothing work...</p>
  
  <p>Well.. here is the code</p>
  
  <pre><code>    package ca.vanzeben.game;
  
  import java.awt.BorderLayout;
  import java.awt.Canvas;
  import java.awt.Color;
  import java.awt.Dimension;
  import java.awt.Graphics;
  import java.awt.image.BufferStrategy;
  import java.awt.image.BufferedImage;
  import java.awt.image.DataBufferInt;
  
  import javax.swing.JFrame;
  
  public class Game extends Canvas implements Runnable {
  
      private static final long serialVerisionUID = 1L;
  
      public static final int WIDTH = 160;
      public static final int HEIGHT = WIDTH / 12*9;
      public static final int SCALE = 3;
      public static final String NAME = "Game";
  
      public boolean running = false;
      public int tickCount = 0;
  
      private JFrame frame;
  
      private BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_3BYTE_BGR);
      private int[] pixels = ((DataBufferInt)image.getRaster().getDataBuffer()).getData();
  
      public Game(){
          setMinimumSize(new Dimension(WIDTH*SCALE, HEIGHT * SCALE));
          setMaximumSize(new Dimension(WIDTH*SCALE, HEIGHT * SCALE));
          setPreferredSize(new Dimension(WIDTH*SCALE, HEIGHT * SCALE));
  
          frame = new JFrame(NAME);
  
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          frame.setLayout(new BorderLayout());
  
          frame.add(this, BorderLayout.CENTER);
          frame.pack();
  
          frame.setResizable(false);
          frame.setLocationRelativeTo(null);
          frame.setVisible(true);
      }
  
      public synchronized void start() {
          running = true;
          new Thread(this).start();
      }
  
      public synchronized void stop() {
          running = false;
  
      }
  
      public void run(){
          long lastTime = System.nanoTime();
          double nsPerTick = 1000000000D/60D;
  
          int ticks = 0;
          int frames = 0;
  
          long lastTimer = System.currentTimeMillis();
          double delta = 0;
  
          while(running){
              long now = System.nanoTime();
              delta +=(now - lastTime) / nsPerTick;
              lastTime = now;
              boolean shouldRender = true;
  
              while(delta &gt;= 1){
                  ticks++;
                  tick();
                  delta -= 1;
                  shouldRender = true;
              }
              try {
                  Thread.sleep(2);
              } catch (InterruptedException e) {
                  e.printStackTrace();
              }
              if (shouldRender){
                  frames++;
                  render();
              }
  
              if(System.currentTimeMillis() - lastTimer &gt;= 1000){
                  lastTimer += 1000;
                  System.out.println(ticks + " ticks, " + frames + " frames");
                  frames = 0;
                  ticks = 0;
              }
          }
      }
  
      public void tick() {
          tickCount++;
      }
  
      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) {
          new Game().start();
      }   
  }
  </code></pre>
  
  <p>And the error is: </p>
  
  <pre><code> Exception in thread "main" java.lang.ClassCastException: java.awt.image.DataBufferByte           cannot be cast to java.awt.image.DataBufferInt
  at ca.vanzeben.game.Game.&lt;init&gt;(Game.java:30)
  at ca.vanzeben.game.Game.main(Game.java:122)
  </code></pre>