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

linux - xterm copying to CLIPBOARD using copy-selection causes automatic updating of CLIPBOARD upon mouse selection -

c++ - qgraphicsview horizontal scrolling always has a vertical delta -