文章目录
- 前言
- 一、知识点介绍
- 二、代码实现
- 总结
前言
相信大家在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图形界面编程如何给窗口设置背景图片
发布评论