如何在paintComponent方法中绘制JPanel中的图形?

时间:2014-07-16 04:31:16

标签: java swing graphics paintcomponent

我需要在Java中用JPanel绘制一些行,我试图在paintComponent()方法之外的另一种方法中绘制它们以从另一个类调用它但我遇到了问题因为绘图图形需要一个Graphics对象,我尝试使用this.getGraphics()但不适合我:

public class Panel extends JPanel{
    public void drawLine(int x1, int y1, int x2, int y2){
        this.getGraphics().drawLine(x1, y1, x2, y2);
    }
}

请问任何建议吗?

1 个答案:

答案 0 :(得分:2)

  

“请问任何建议吗?”

Panel课程中保留Line2D个对象的列表。 (List<Line2D>

遍历paintComponent方法

中的列表
Graphics2D g2 = (Graphics2D)g;
for (Line2D line : lines) {
    g2.draw(line);
}

然后您可以使用addLine(Line2D line)的方法,在列表中添加一行并repaint() s

public void addLine(Line2D line) {
    lines.add(line);
    repaint();
}

  

“如何使用paintComponent方法在JPanel中绘制图形?”

别。所有自定义绘制都应在Graphics方法中提供的paintComponent对象的上下文中完成。因此,您需要预测可能绘制的内容并绘制它。如上所示,这可能是动态的。