DebugWindow

nothing fancy, just pretty useful. nothing none of you couldn’t have written yourselves, but perhaps you didn’t think of this :slight_smile:

this just opens a simple Frame and displays some info. it can be used instead of a debugger to display information and is far better than System.out.println().

i couldn’t be bothered to fiddle with the debugger in Eclipse so i wrote this instead since i needed to display lots of information at the same time.


import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.util.Vector;

public class DebugWindow extends Frame {
      private Vector values;

      public DebugWindow(int width, int height) {
            super("DebugWindow");
            setSize(width, height);
            values = new Vector();
            show();
      }
      
      public void addValue(String s, double val) {
            values.add(s + " " + val);
      }
      
      public void display() {
            Graphics g = getGraphics();
            g.setColor(Color.WHITE);
            g.fillRect(0, 0, getWidth(), getHeight());
            g.setColor(Color.BLACK);
            for (int i = 0; i < values.size(); i++)
            g.drawString((String) values.get(i), 5, 35 + i * 15);
            values.clear();
      }
}

this is how it’s used:

  1. in the constructor of some object, like a sprite for instance, create an instance:
 DebugWindow debugWindow = new DebugWindow(200, 200); 
  1. somewhere in your code add the following (just an example):

debugWindow.addValue("lateralForceFront", lateralForceFront);
debugWindow.addValue("pos x", x);
debugWindow.addValue("pos y", y);
debugWindow.addValue("speed", speed);
debugWindow.display();

a good place to add this is something that’s called every loop, say move() or performGameTick() or whatever you call it. you get the idea.