KeleQAQ 2019-11-02 20:33 采纳率: 0%
浏览 260
已采纳

JAVA怎么在容器或者标签上绘图啊?

不太懂paint( Graphics g ), repaint。

我是想用读取一张图片,然后绘制到面板上。

图片说明

没有显示

图片说明
代码

public class My1 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        new MyWins1();
    }

}

class MyWins1 extends JFrame{
    BufferedImage pic;

    public MyWins1() {
        setTitle("绘图");
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 400, 300);
        validate();
    }
    //这个方法重写了。哪里出问题了
    public void paint(Graphics g) {
        super.paint(g);
        // 绘图
        try {//读取图片
            pic = ImageIO.read(new File("D:\\其它\\sun.jpg"));
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        Graphics2D g2=(Graphics2D) g;
        BufferedImage image = new BufferedImage(200, 200, BufferedImage.TYPE_INT_RGB);
        g2 = image.createGraphics();
        g2.drawImage(pic, 200, 200, this);
    }
}
  • 写回答

1条回答 默认 最新

  • threenewbee 2019-11-02 23:10
    关注

    g2.drawImage(pic, 200, 200, this);
    是不是200 200太远了,导致画在了显示区域外,用0, 0看看
    看下pic得到图片了没有
    g2 = image.createGraphics();
    这个去掉,因为你在窗体上画,不是在内存位图里面画

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制