一、介绍
在刚刚我们已经在界面中添加了菜单,接下来就开始学习如何在界面中添加图片。
有的同学可能会认为,下面是一张大的图片,再切割成N个小份。
其实并不是这样,在游戏中,下面这个是 15张
小的图片,还有一个空白而已。
在后面,当我们学习完移动后,实际上就是移动这里小图片的位置。
图片所对应的类是 ImageIcon
,因此一张图片就会对应一个 ImageIcon
的对象,15张图片就应该对应 15个ImageIcon
的对象。
但是我们现在不能直接将 ImageIcon
直接添加到 JFrame
界面中,因为我们还需要给图片进行 宽高、位置等
设置。
因此需要先把图片放到一个 JLabel
中。
JLabel
你可以把它理解成是一个管理者,它可以管理 文字和图片
。
它在管理图片的时候,就可以对图片的宽高、位置、边框
进行设置,代码写起来也很简单。
二、步骤
首先创一个 ImageIcon
的对象,并指定图片在电脑中的位置。
再创建一个 JLabel
的对象,把图片交给 JLabel
,再把这个整体放到界面中即可。
此时图片就会成功的添加到界面 JFrame
中,默认是展示在界面的正中央。
首先我们需要将图片素材全部添加到项目中。
本游戏使用到的图片都整理到了 素材的image
中
直接复制 image
这个文件夹,
打开IDEA,选中模块名,直接 ctrl + v 粘贴进去,点击OK即可。
注意不要粘贴错了,是粘贴在当前模块下。
找到 image ——> animal ——> animal3 ——> all.jpg
,这个是游戏的完整图。
前面的 1.jpg ~ 15.jpg
就是我把这张图去分隔成了15个小方格,和一个留白。
每张小图片的大小都是固定的,看右上角。
它的宽高都是 105 * 105
,单位是像素
三、代码示例
1)思路分析
找到 GameJFrame
,当我们创建 GameJFrame
对象的时候,就表示游戏的窗体就已经出来了。
然后对这个窗体进行一些初始化、添加菜单,添加完菜单后,我们要在下面去初始化图片,相当于就是将图片加载到界面当中。
这里我们通过 initImage()
方法,然后 alt + 回车 ,选择第一个 Create method 'initImage' in 'GameJFrame'
,即利用IDEA帮我们创建方法,方法的名字叫做 initImage
,在当前的 GameJFrame
类中。
此时在下面就自动生成好了方法。
然后给方法加上注释
// 初始化图片
private void initImage() {
}
现在,我们就可以添加图片了。
但是要注意的是,图片不是直接添加到界面中的,而是需要先创建 ImageIcon
的对象;第二步还需要创建一个 JLabel
的对象(管理容器);第三步:将管理容器添加到界面中。
// 初始化图片
private void initImage() {
// 创建一个图片 ImageIcon 对象
// 创建一个 JLabel对象(管理容器)
// 把管理容器添加到界面中
}
如果你不知道ImageIcon对象如何创建,你可以:① 看源码;② 看API帮助文档
① 看源码
这里就来看源码。ctrl + N 搜索 javax.swing
包下的 ImageIcon
然后 ctrl + F12 找它的构造方法,可以看见它有很多很多的构造方法。
如果不知道用谁,可以先来看最简单的空参构造。
空参构造肯定不行,因为你要想,我创建一个图片对象,那肯定要将图片在电脑上的位置告诉它。
有没有一个构造方法中直接传入一个字符串,表示图片的位置呢?
此时可以找到有一个参数是 String
的构造方法
点进来看一下,形参类型是 String
,形参的名字是 filename(文件名)
看到这我们就知道了,我们可以把图片路径用这个构造传递进去。
② 看API帮助文档
根据如图步骤搜索,同样也可以找到 形参是String的构造方法
。
2)创建 ImageIcon
对象
首先来复制图片的路径,右击本地图片 ——> Copy Path/Reference… ——> Absolute Path,这个就是图片的完整路径
然后调用ImageIcon的构造方法将路径传入进去。
这句话的意思是:我要把 E:\\learning_notes\\JAVA\\code\\basic-code\\puzzlegame\\image\\animal\\animal3
路径下的 3.jpg
这张图片加载到内存中。
// 创建一个图片 ImageIcon 对象
ImageIcon icon = new ImageIcon("E:\\learning_notes\\JAVA\\code\\basic-code\\puzzlegame\\image\\animal\\animal3\\3.jpg");
3)创建 JLabel
对象
表示的是:这个管理容器就管理括号中的内容
// 创建一个 JLabel对象(管理容器)
JLabel jLabel1 = new JLabel(icon);
4)把管理容器添加到界面中
// 把管理容器添加到界面中,调用JFrame的add方法
// 添加进去后,默认会放在页面的正中央
this.add(jLabel1);
5)调试
右键运行App,可以看见图片成功展示。