文章目录

  • 前言
  • 一、知识点介绍
  • 二、代码实现
  • 总结


前言

相信大家在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的文章,哈哈。

更多推荐

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