java - The backround of the Jpanel is grey -


im trying create game in java. @ first i've made jpanel , made fps counter , backround white. after i've tried made when pressing escape, jpanel shutting down , i've tried make when pressing space, backround moving green after that, when im trying start, jpanel moving grey backround , fps counter has been disappear.

this frame class

public class frame extends jframe{  public static void main(string[] args) {     new frame(); }   public frame(){     new jframe();       this.settitle("tower defence - sahar haine");     this.setdefaultcloseoperation(exit_on_close);     this.setextendedstate(maximized_both);     this.setundecorated(true);     this.setresizable(false);     this.setvisible(true);       screen screen = new screen(this);     this.add(screen); } 

this screen class:

public class screen extends jpanel implements runnable{   thread thread = new thread(this); frame frame;  private int fps = 0;  public int scene;  public boolean running = false;  public screen(frame frame){     this.frame = frame;        this.frame.addkeylistener(new keyhandller(this));      thread.start();  }  @override public void paintcomponent(graphics g){     g.clearrect(0, 0, this.frame.getwidth(), this.frame.getheight());      g.drawstring(fps + "", 10, 10);       if(scene == 0){         g.setcolor(color.blue);      }else{      }     g.setcolor(color.green);      g.fillrect(0, 0, this.frame.getwidth(), this.frame.getheight()); }    public void run() {     system.out.println("success");      long lastframe = system.currenttimemillis();     int frames = 0;      running = true;     scene = 0;      while(running){         try {             repaint();              frames++;              if(system.currenttimemillis() - 1000>= lastframe){                 fps = frames;                 frames = 0;                 lastframe = system.currenttimemillis();             }               thread.sleep(1);         } catch (interruptedexception ex) {             logger.getlogger(screen.class.getname()).log(level.severe, null, ex);         }     }     system.exit(0); }     public class keytyped{     public void keyesc(){        running = false;  }      public void keyspace() {       scene = 1;     } 

and key handler class:

public class keyhandler implements keylistener{  private screen screen; private screen.keytyped keytyped;   public keyhandler(screen screen){     this.screen = screen;     this.keytyped = this.screen.new keytyped();  }    public void keytyped(keyevent e) {  }   public void keypressed(keyevent e) {     int keycode = e.getkeycode();      system.out.println(e.getkeycode());      if(keycode == 27){         this.keytyped.keyesc();      }      if(keycode == 27){         this.keytyped.keyspace();      } }   public void keyreleased(keyevent e) {  } 

one issue jumps out have hard coded "keycode = 27" both escape , space not correct. "27 - escape" , "32 - space". rather hard code values, please use keyevent.vk_escape , keyevent.vk_space documented here, keyevents

edit 1

also make draw string after "fill" or else "fill" on paint fps string , not see it.


Comments