java - Glitch drawing on JComponent -


i'm having weird kind of glitch drawing on jcomponent. happens whenever drag jframe window outside bounds of monitor, drawing accelerates , draws faster should. i'm guessing has swing management, seems drawing stops once jframe offscreen , resumes in burst kind of way after being set inside bounds of monitor screen.

here's code:

package javagame;  import java.awt.color; import java.awt.font; import java.awt.graphics; import javax.swing.jcomponent;  /** * *  */ public class screen extends jcomponent implements runnable{  // paintbrush drawing. //private graphics internalg; private boolean keepdrawing = true; public screen() {            super();    startdrawing(); }  /// draw methods @override protected void paintcomponent(graphics g) {              super.paintcomponent(g);     //internalg = g;     //draw      //system.out.println("painted");     drawsomething(g); }     @override public void run() {     //draw until manually stopped     while(keepdrawing){         repaint();     try { thread.sleep(100); }     catch (interruptedexception ex) { }     } } /**  * fire off thread.  */ private void startdrawing() {     thread t = new thread(this);     //thread ends when jframe closed.     t.setdaemon(true);     t.start();  } /// draw logic ///   /// images int d = 2; public void drawsomething( graphics internalg ) {     if (isvalid()){            internalg.setcolor(color.black);         internalg.fillrect(0, 0, getwidth(), getheight());//clear bg         internalg.setfont( new font(font.dialog, font.bold, 15) );         internalg.setcolor( color.green );         internalg.drawoval( (getwidth()/2)-(d/2) , (getheight()/2)-(d/25), d, d);         d++;     } }  /// images  } 

  • don't have program logic in painting methods.
  • use floating point numbers, double, scaling, not int, d.
  • base value of scaling number on system time, not on logic contained within code have no control on how fast called, painting methods.

Comments

Popular posts from this blog

Java sticky instances of class com.mysql.jdbc.Field aggregating -