[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Speedup some java code



Hello.  I have some awt 2D code that is blinking in the JPanel.  I need
to speed it up if possible.

Can someone who knows see an ability in this code to speed up the
repaint?  This is coming from a class that extends JPanel and at one
time extended Canvas from awt.



  public void update(Graphics g) {
    int j,beg; boolean ok;
    g.setFont(PTFont);
    //draw lines
    for (int i=0;i<lines;i++) { 
     if (lineRedraw[i] == true) {
      lineRedraw[i] = false;
      j=0;
      Color fg,bg;
      while (j < columns-1) {
       fg=screenfg[i][j];
       bg=screenbg[i][j];
       beg=j;ok=true;
       while (++j < columns && ok)
        if (fg!=screenfg[i][j] || bg!=screenbg[i][j]) ok = false;
       if (ok==false) j--;
       g.setColor(bg);
       g.fillRect(3+beg*charOffset, 2+i*lineOffset, charOffset*(j-beg),
lineOffset);
       g.setColor(fg);
       g.drawChars(screen[i], beg, j-beg, 3+beg*charOffset,
topOffset+i*lineOffset);
      }
     }
    }
    //draw cursor
    g.setColor(new Color(screenbg[yloc][xloc].getRGB() ^ 0xFFFFFF));
    g.fillRect(3+xloc*charOffset, 2+yloc*lineOffset, charOffset,
lineOffset);
    g.setColor(new Color(screenfg[yloc][xloc].getRGB() ^ 0xFFFFFF));
    g.drawChars(screen[yloc], xloc, 1, 3+xloc*charOffset,
topOffset+yloc*lineOffset);
    lineRedraw[yloc]=true;
  }
  
  public void paint(Graphics g) {
    for (int i=0;i<lines;i++) lineRedraw[i] = true;
    g.setColor(d_bgcolor);
    g.fillRect(1,1,PTWidth-1,PTHeight-1);
    g.setColor(d_fgcolor);
    g.drawRect(0,0,PTWidth,PTHeight);
    update (g);
  }