我需要在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);
}
}
请问任何建议吗?
答案 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
对象的上下文中完成。因此,您需要预测可能绘制的内容并绘制它。如上所示,这可能是动态的。