2012-02-11 93 views
2

我是java初学者,&我创建的程序使用箭头键绘制线条,其中下一行从第一行的末尾开始。 现在,我创建了它,但问题在于,无论何时重新调整窗口大小,图形都会消失。paintComponent中的图形在调整JFrame大小后消失

这里是我的代码:

public class draw extends JPanel { 

    int up = 1, down = 0, left = 0, right = 0; 
    int beginX, beginY; 

    @Override 
    public void paintComponent(Graphics g) { 

     if(up == 1){ 
      beginX = getWidth()/2; 
      beginY = getHeight()/2; 
     } 
     if (up > 0) { 
      g.drawLine(beginX, beginY, (beginX), (beginY - up)); 
      beginY -= (up); 
      up = 0; 
     } else if (down > 0) { 
      g.drawLine(beginX, beginY, beginX, (beginY + down)); 
      beginY += down; 
      down = 0; 
     } else if (right > 0) { 
      g.drawLine(beginX, beginY, (beginX + right), beginY); 
      beginX += right; 
      right = 0; 
     } else if (left > 0) { 
      g.drawLine(beginX, beginY, (beginX - left), beginY); 
      beginX -= (left); 
      left = 0; 
     } 

    } 

    public void drawUp() { 
     up += 3; 
     repaint(); 
    } 

    public void drawDown() { 
     down += 3; 
     repaint(); 
    } 

    public void drawLeft() { 
     left += 3; 
     repaint(); 
    } 

    public void drawRight() { 
     right += 3; 
     repaint(); 
    } 
}  

回答

4

的paintComponent应该绘制组件的当前图形,而不是你想要的补充。所以你现在有两种方法,既可以记住所有行并将其全部绘制出来,也可以创建一个单独的缓冲区,以便在生成线时绘制,并在要求重绘时使用该缓冲区绘制组件。

+0

你能否给我一些关于缓冲区的信息,或者给我一些链接以供参考.. 谢谢 – Jaydeep 2012-02-12 07:48:08

相关问题