java图形界面编程如何给窗口设置背景图片


前言

相信大家在GUI编程过程中,也就是开发窗口程序过程中,比如游戏界面等,难免会需要给窗口添加背景图片,接下来我将给大家详细讲解如何给窗口设置背景图片。


一、知识点介绍

给窗口绘制背景背景图片需要用到"java"中的Canvas类。
1.需要新建一个类,并继承Canvas类。
2.重写Canvas类中的paint(Graphics g)方法。
3.调用Graphics画笔的drawImage()方法开始绘制背景图片。
4.把你新建的类实例化一个对象,把它添加到窗口中即可。win.add()方法。
5.drawImage(Image img, int x, int y, int width, int height, ImageObserver observer) 方法介绍:
参数x,y是指距离窗口左上角的距离,width和height是指要把图片绘制的宽和高,ImageObserver observer设置为null即可。

二、代码实现

代码如下(示例):

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.io.File;
import java.io.IOException;

public class csdn {
    public static void main(String[] args) {
        new csdn();
    }
    //使用JFrame类初始化一个窗口对象win
    JFrame win = new JFrame("绘制背景图片");
    //设置此类的构造方法
    csdn() {
        //初始化一个MyCanvas对象,用于绘制背景图片
        //因为ImageIo.read有异常,所以用try-catch环绕
        try {
            //这里用ImageIO流来读取图片文件
            MyCanvas myCanvas = new MyCanvas(ImageIO.read(new File("G:\\java-ex\\GUI\\images\\library.jpg")));
            //把MyCanvas对象添加到窗口win中即可
            win.add(myCanvas);
        } catch (IOException e) {
            e.printStackTrace();
        }

        //设置窗口的基本属性
        win.setSize(512,371);//设置窗口尺寸
        win.setVisible(true);//设置窗口可见
        win.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//设置窗口关闭方式

    }

    //新建一个MyCanvas类,并继承Canvas类
    class MyCanvas extends Canvas {
        Image image;
        //设置此类的构造方法,传递过来一个image文件
        MyCanvas(Image image) {
            this.image = image;
        }
        //重写paint方法
        @Override
        public void paint(Graphics g) {
            super.paint(g);
            //调用Graphics画笔的drawImage()方法开始画图。
            g.drawImage(image,0,0,win.getWidth(),win.getHeight(),null);
        }
    }

}

代码运行结果:在这里插入图片描述

总结

上述代码里的注释文字已经讲的比较清楚了,我再对细节做一些补充
1.在向myCanvas中传递图片文件时,我用的是ImageIO.read()方法

      //因为ImageIo.read有异常,所以用try-catch环绕
        try {
            //这里用ImageIO流来读取图片文件
            MyCanvas myCanvas = new MyCanvas(ImageIO.read(new File("G:\\java-ex\\GUI\\images\\library.jpg")));
            //把MyCanvas对象添加到窗口win中即可
            win.add(myCanvas);
        } catch (IOException e) {
            e.printStackTrace();
        }

在此处也可以用另一种方法得到一个image文件(Toolkit类),代码如下,重点在于MyCanvas类中的改动。

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.io.File;
import java.io.IOException;

public class csdn1{
    public static void main(String[] args) {
        new csdn();
    }
    //使用JFrame类初始化一个窗口对象win
    JFrame win = new JFrame("绘制背景图片");
    //设置此类的构造方法
    csdn1() {
        //初始化一个MyCanvas对象,用于绘制背景图片
        MyCanvas myCanvas = new MyCanvas();
        //把myCanvas添加到窗口win中即可
        win.add(myCanvas);
        //设置窗口的基本属性
        win.setSize(512,371);//设置窗口尺寸
        win.setVisible(true);//设置窗口可见
        win.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//设置窗口关闭方式

    }

    //新建一个MyCanvas类,并继承Canvas类
    class MyCanvas extends Canvas {
        Toolkit toolkit = getToolkit();
        Image image;
        //重写paint方法
        @Override
        public void paint(Graphics g) {
            image = toolkit.getImage("G:\\java-ex\\GUI\\images\\library.jpg");
            super.paint(g);
            //调用Graphics画笔的drawImage()方法开始画图。
            g.drawImage(image,0,0,win.getWidth(),win.getHeight(),null);
        }
    }

}


大家要是觉得不错的话,记得给我点个赞加个关注呦,后续我会继续发布一些帮助新手入门java的文章,哈哈。

  • 22
    点赞
  • 144
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李小枫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值