Java 如何在JPanel中绘制图形?
我需要在Java中的Java 如何在JPanel中绘制图形?,java,swing,graphics,paintcomponent,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().
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);
}
}
有什么建议吗
“有什么建议吗?”
在面板
类中保留对象列表。(列表
)
在paintComponent
方法中遍历列表
Graphics2D g2 = (Graphics2D)g;
for (Line2D line : lines) {
g2.draw(line);
}
然后您可以使用一个方法addLine(line2dline)
,将一行添加到列表中并repaint()
s
“如何在JPanel中使用paintComponent方法绘制图形?”
不要。所有自定义绘制都应在
paintComponent
方法中提供的Graphics
对象的上下文中完成。所以你需要预测可能画出什么,然后画出来。如上所述,这可以是动态的。thx它工作得很好,但是当我从集合中删除一些行并重新绘制时,它不会更新修改,也没有任何建议吗?您需要确保在paintComponent
方法的开头调用super.paintComponent
public void addLine(Line2D line) {
lines.add(line);
repaint();
}