Swing - 不会显示添加到现有Panel的行

时间:2013-10-07 04:32:47

标签: java swing

我有一个JPanel,在开始时绘制了点数。当我在这些点之间穿越时,我试图在这些点之间添加线条。但线条没有显示出来。如果我使用重绘,之前的绘图就会消失。以下是我的代码。我是否需要刷新drawLine代码?

public void paintComponent(Graphics g) {
    super.paintComponent(g);
    doDrawing(g);
}
//works fine
private void doDrawing(Graphics g) {
    g.drawLine(x, y, x, y);
}

//called later from outside, lines do not show up on Panel
public void drwaLine(Point p1, Point p2) {
    Graphics g2d = getGraphics();
    g2d.drawLine(p1.getX(), p1.getY(), p2.getX(), p2.getY());
}

1 个答案:

答案 0 :(得分:2)

  

如果我使用重绘,之前的绘图就会消失。

是的,因为整个组件再次重​​新绘制,并且面板所做的第一件事是绘制背景以清除所有旧绘画。

有关绘画的两种常用方法,请参阅Custom Painting Approaches

  1. 使用列表来保存要绘制的对象
  2. 使用BufferedImage。