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 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵