用Java刷新JPanel

时间:2012-06-20 17:59:53

标签: refresh jpanel graphics2d

我正试图通过按钮绘制线条。

public void paintComponent(Graphics g)
{
    super.paintComponent(g);
    g2 = (Graphics2D) g;
    g2.setColor(Color.BLACK);
    g2.setStroke(new BasicStroke(2));
    for (int i=0;i<18;i++)
    {
        g2.draw(new Line2D.Double(2+i*20, 0, 2+i*20, 260));
        g2.draw(new Line2D.Double(0, 2+i*20, 360, 2+i*20));
    }
    g2.setColor(Color.RED);
}
public void drawDiagonallyLineDownLeft()
{
    int newXCoord=xDrawCoord+20;
    int newYCoord=yDrawCoord+20;
    g2.drawLine(xDrawCoord, yDrawCoord, newXCoord, newYCoord);
    xDrawCoord=newXCoord;
    yDrawCoord=newYCoord;
    repaint();
}

drawDiagonallyLineDownLeft方法绘制线条。我试着在构造函数中使用它,它工作正常。 这是JButton的听众

public void actionPerformed(ActionEvent arg0) 
            {
                panel.drawDiagonallyLineDownLeft();
                panel.revalidate();
                panel.repaint();
            }

它也可以。我在Console中用方法打印消息,打印好了。但是按下按钮时没有线路。我想,我应该以某种方式刷新它,我使用了我所知道的所有方法,但它仍然不起作用。

1 个答案:

答案 0 :(得分:1)

当您调用重绘时,所有绘图都将被删除,您必须使用方法paintComponent(Graphics g)绘制

在某些情况下会自动调用

paintComponent(Graphics g)(窗口调整大小等)