首页 > Java > java教程 > 正文

如何在 JPanel 上绘制不会消失的矩形?

Patricia Arquette
发布: 2024-11-05 06:23:01
原创
681 人浏览过

How to Draw Rectangles That Won't Disappear on a JPanel?

绘制不会消失的矩形

在代码中,您创建了一个扩展 JPanel 的 MyPanel 类。在此类中,您定义了一个方法 DrawRect,该方法采用多个参数来绘制矩形。但是,当您调用 repaint() 时,它会重新绘制整个面板,包括之前的矩形。

为了防止这种情况,您可以使用 Graphics2D.drawImage() 在现有画布上绘制矩形。以下是修改代码的方法:

<code class="java">class MyPanel extends JPanel {
  private BufferedImage canvasImage; // Create a BufferedImage to store the canvas

  public void DrawRect(int x, int y, int size, Color c) {
      if (canvasImage == null) {
          canvasImage = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_ARGB);
          Graphics2D g = canvasImage.createGraphics();
          g.setColor(getBackground());
          g.fillRect(0, 0, getWidth(), getHeight());
          g.dispose();
      }
      
      Graphics2D g = canvasImage.createGraphics();
      g.setColor(c);
      g.fillRect(x, y, size, size);
      g.dispose();
      
      repaint();
  }
  
  @Override
  public void paint(Graphics g) {
      super.paint(g);
      g.drawImage(canvasImage, 0, 0, null); // Draw the canvasImage onto the panel
  }
}</code>
登录后复制

注意:

  • 此方法创建一个 BufferedImage 作为绘图表面,它在重绘调用中持续存在,允许你绘制不会消失的矩形。
  • 绘制前记得检查canvasImage是否为空并初始化它,以避免在空白画布上绘制。
  • 在绘画中,将canvasImage绘制到面板来显示矩形。

以上是如何在 JPanel 上绘制不会消失的矩形?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!