本文主要是实现拼图小游戏中的添加图片功能
由于我们不知道这个方法如何使用,所以我们可以通过阅读源码或者查看API的方式来查找方法的用法,这里我们介绍一下阅读源码的方式
所以格式为:
ImageIcon icon = new ImageIcon("...(此处填写图片路径)")
所以此处我们要传递的参数就是图片的名字,但是计算机要寻找图片是按照路径来的,所以我们要复制图片存放的路径
用法:可以简单记忆为JLabel是一个管理容器,创建对象以后管理括号内的东西
比如上面我们新建了一个对象icon,应该被放入到JLabel容器中,所以括号内传递的参数就是icon
JLabel jLabel = new JLabel(icon)
注意:隐藏容器要手动获取,图片放在这个隐藏容器中,默认图片放在正中间,所以我们要取消默认设置,并以 XY 轴坐标形式来存放图片
手动获取隐藏容器:getContentPane()
取消放置在正中间:setLayout(null)
,放在初始化界面的方法中
再使用add函数添加
this.getContentPane().add(jLabel)
Ctrl+F12
搜素,并选中空参构造的函数FrameInit()
,我们再用Ctrl+B
来跟进一下creatRootPane()
,我们继续跟进 private void initImage() {
//创建第一张图片
//创建ImageIcon
ImageIcon icon1 = new ImageIcon("F:\\IDEA\\PuzzleGame\\image\\image\\animal\\animal3\\1.jpg");
//创建JLabel管理容器
JLabel jLabel1 = new JLabel(icon1);
//设定图片位置
jLabel1.setBounds(0,0,105,105);
//将JLabel放到界面中
this.getContentPane().add(jLabel1);
//创建第二张图片
ImageIcon icon2 = new ImageIcon("F:\\IDEA\\PuzzleGame\\image\\image\\animal\\animal3\\2.jpg");
JLabel jLabel2 = new JLabel(icon2);
jLabel2.setBounds(105,0,105,105);
this.getContentPane().add(jLabel2);
//创建第三张图片
ImageIcon icon3 = new ImageIcon("F:\\IDEA\\PuzzleGame\\image\\image\\animal\\animal3\\3.jpg");
JLabel jLabel3 = new JLabel(icon3);
jLabel3.setBounds(210,0,105,105);
this.getContentPane().add(jLabel3);
//创建第四张图片
ImageIcon icon4 = new ImageIcon("F:\\IDEA\\PuzzleGame\\image\\image\\animal\\animal3\\4.jpg");
JLabel jLabel4 = new JLabel(icon4);
jLabel4.setBounds(315,0,105,105);
this.getContentPane().add(jLabel4);
}
优化后的代码
private void initImage() {
int n = 1;
for(int i = 0; i < 4; i++){
for(int j = 0; j < 4; j++){
JLabel jLabel = new JLabel(new ImageIcon("F:\\IDEA\\PuzzleGame\\image\\image\\animal\\animal3\\"+n+".jpg"));
jLabel.setBounds(105 * j, 105 * i,105,105);
this.getContentPane().add(jLabel);
n++;
}
}
}
添加图片的代码并不复杂,但是我们要学会用所学知识去优化代码,使得代码尽量简洁,提高代码的可读性