栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用Graphics的JPanel自定义绘图

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用Graphics的JPanel自定义绘图

不要通过在诸如JPanel之类的组件上调用getGraphics来获取Graphics对象,因为获得的Graphics对象将不会在下一次重绘时持续存在(这很可能是问题的根源)。

相反,可以考虑在BufferedImage中进行所有绘制, 然后
可以对自己的内心使用getGraphics()。如果执行此操作,请在完成绘制后不要忘记处理Graphics对象。

例如,

import java.awt.*;import java.awt.event.*;import java.awt.image.BufferedImage;import javax.swing.JPanel;@SuppressWarnings("serial")public class MyPaint extends JPanel {   public static final int IMG_WIDTH = 400;   public static final int IMG_HEIGHT = IMG_WIDTH;   private BufferedImage image = new BufferedImage(IMG_WIDTH, IMG_HEIGHT, BufferedImage.TYPE_INT_ARGB);   public MyPaint() {      MyMouseAdapter myMouseAdapter = new MyMouseAdapter();      addMouseListener(myMouseAdapter);      addMouseMotionListener(myMouseAdapter);   }   @Override   protected void paintComponent(Graphics g) {      super.paintComponent(g);      if (image != null) {         g.drawImage(image, 0, 0, null);      }   }   @Override   public Dimension getPreferredSize() {      return new Dimension(IMG_WIDTH, IMG_HEIGHT);   }   public void clearScreen() {      Graphics g = image.getGraphics();      g.setColor(Color.black);      g.fillRect(0, 0, image.getWidth(), image.getHeight());      g.dispose();      repaint();   }   private class MyMouseAdapter extends MouseAdapter {      // pre to draw on the buffered image.       // Don't forget to call repaint() on the "this" JPanel   }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/373235.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号