java - Swing - 将行添加到退出面板不显示

标签 java swing

我有一个 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两种常见的绘画方式:

  1. 使用列表来保存要绘制的对象
  2. 使用 BufferedImage。

关于java - Swing - 将行添加到退出面板不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19217120/

相关文章:

java - Spring JDBCTemplate ResultSetExtractor 和 Spring Batch ItemReader 之间的区别

java - 将 JLabel+icon 与 JTable cellrenderer + 选择突出显示一起使用

java - 我的 JTable 抛出 classCastException。我正在从文本文件加载,需要(真/假)列显示为复选框

java - 多次使用 Box 变量

java - xmpp openfire 推送通知和日志记录

java - 怀疑int变量的范围

java - 保护 RESTful Web 服务 URL

java - 将liferay用户id提供到orbeon表单运行器生成的xml中

java - 如何使用 JFrame 类作为主类?

java - 如何将对象输出到 JTable 中,以便编辑字段会影响原始对象的状态?