我有一个 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());
}
最佳答案
If I use repaint, previous drawing goes away.
是的,因为整个组件会再次重新绘制,并且面板所做的第一件事就是绘制其背景以清除所有旧绘制。
参见Custom Painting Approaches两种常见的绘画方式:
- 使用列表来保存要绘制的对象
- 使用 BufferedImage。
关于java - Swing - 将行添加到退出面板不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19217120/