本篇博客是对推箱子游戏首页代码的展示
效果图:
难点:
在背景图上添加按钮。
由于直接使用add方法,会变成图片一块区域,按钮一块区域,彼此互不重叠,形成的界面效果不太好,因此用了JLayeredPane。
附:java 通过JLayeredPane实现背景图上添加其他控件
完整代码:
(代码比较简单,不再做过多的解释,每行基本都有注释,可以根据注释进行理解)
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class game_tui_1 extends JFrame implements ActionListener{
JButton jb1=new JButton("开始游戏");
JButton jb2=new JButton("地图编辑器");
public game_tui_1() {
JLayeredPane layeredPane=new JLayeredPane();
ImageIcon image=new ImageIcon("shiyan4_image/background.png"); //图片路径,根据实际自行修改
JLabel jl=new JLabel(image);
jl.setBounds(0,0,image.getIconWidth(),image.getIconHeight());//设置jl的位置和大小
jb1.setBounds(150,350,100,50);//jb1的位置和大小
jb1.addActionListener(this);//jb1添加监听器
jb1.setBackground(new Color(140,199,181));//设置jb1按钮的背景
jb2.setBounds(350,350,100,50);//jb2的位置和大小
jb2.addActionListener(this);//jb2添加监听器
jb2.setBackground(new Color(140,199,181));//设置jb2按钮的背景
//将jl放到最底层。 /*层次关系可见下面的注释*/
layeredPane.add(jl,JLayeredPane.DEFAULT_LAYER);
//将jb1,jb2放到高一层的地方
layeredPane.add(jb1,JLayeredPane.MODAL_LAYER);
layeredPane.add(jb2,JLayeredPane.MODAL_LAYER);
//设置窗口属性
this.setTitle("推箱子");//设置窗口题目
this.setLayeredPane(layeredPane);//窗口添加layeredPane
this.setSize(image.getIconWidth(),image.getIconHeight());//窗口大小
this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);//窗口关闭
this.setLocationRelativeTo(null); //窗口位置
this.setResizable(false);//窗口不可最大化
this.setVisible(true);//窗口可视
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new game_tui_1();
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getSource()==jb1) {/*new game_tui_2();dispose();*/}
else {/*new game_tui_3();dispose();*/}
//由于本篇博客单独讲解推箱子首页,因此对按钮跳转进行了注释处理,后面会有完整代码
}
}