本文代码图片路径自己要重新改,没有粘图片上来
用javaGUI做游戏界面,如果用文字的话会出现界面特别卡的问题,我总结出用ps做特效字体,然后用JLable标签加进去,再对对应的标签做鼠标点击事件
1.JLable标签支持html代码,eg:JLalbe jl=new JLable("<html><body><font size='5' face='隶属'>想添加的文字</font></body></html>");
2.注意要设置组件到相应的位置必须要对窗口的整个布局设置为空,eg:this.setLocationLayout(null);否则对组件.setBounds(.....)将无效
3.有时候设背景色不管用可以用这个:
Container contain=getContentPane();
contain.setBackground(Color.red);
3.添加鼠标事件有以下几种:MouseEvent表示当前活动的是哪个键
mouseClicked(MouseEvent e);鼠标点击操作
MouseEntered(MouseEvent e);鼠标进入操作
MouseExited(MouseEvent d);鼠标移出操作
MousePressed(MouseEvent e);鼠标按下操作
MouseReleased(MouseEvent e );鼠标释放操作
1 package demo.choose;
2
3 import java.awt.Color;
4 import java.awt.Container;
5 import java.awt.Image;
6 import java.awt.event.MouseAdapter;
7 import java.awt.event.MouseEvent;
8
9 import javax.swing.ImageIcon;
10 import javax.swing.JDialog;
11 import javax.swing.JFrame;
12 import javax.swing.JLabel;
13 import javax.swing.JOptionPane;
14
15 import demo.start.GameStart;
16 /**
17 * 初始界面类
18 * @author Administrator
19 *
20 */
21 @SuppressWarnings("all")
22 public class ChooseFunction extends JFrame{
23 public JDialog jd=new JDialog();
24 public void init(){
25 this.setSize(500, 800);//设置窗口的大小
26 //设置窗口布局为null
27 this.setLayout(null);//把布局设置为空才能把组件位置设置为特殊位置
28 Container contain=getContentPane();//获取整个界面的容器
29 contain.setBackground(Color.BLACK);//设置界面的背景
30 //加图标
31 this.setTitle("Airplane big war!!");
32 this.setIconImage(new ImageIcon("./src/images/icon.png").getImage());
33
34
35 //添加图片在上面
36 JLabel jl1=new JLabel(new ImageIcon("./src/images/play.gif"));//创建一个JLable用来放play图片
37 JLabel jl2=new JLabel(new ImageIcon("./src/images/exit.gif"));//创建一个JLable用来放exit图片
38 JLabel jl3=new JLabel(new ImageIcon("./src/images/war.gif"));//创建一个JLable用来放标题
39 JLabel jl4=new JLabel(new ImageIcon("./src/images/introduction.gif"));//创建一个JLable用来放说明
40 //设置游戏的说明
41 jl4.setForeground(Color.RED);
42 jl1.setBounds(160, 300, 200, 100);//开始图片的位置
43 jl2.setBounds(160, 400, 200, 100);//退出图片的位置
44 jl3.setBounds(0, 100,500, 120);//标题图片的位置
45 jl4.setBounds(100, 500,319,112);//功能介绍图片的位置
46 this.add(jl1);//把开始图片添加到框架中
47 this.add(jl2);//把退出图片添加到框架中
48 this.add(jl3);//把标题图盘添加到框架中
49 this.add(jl4);把说明图片添加到框架中
50 //为play组件添加鼠标事件,把当前窗口传进去
51 jl1.addMouseListener(new PlayMouseListener(this));//为play添加鼠标事件
52 //为exit组件添加鼠标事件
53 jl2.addMouseListener(new ExitMouseListener());//为exit添加鼠标事件
54 //为introduction设置弹框
55 jl4.addMouseListener(new IntroduceMouseListener(this));//为说明添加鼠标事件
56 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置窗口关闭
57 this.setLocationRelativeTo(null);//把窗口的相对屏幕的位置居中显示
58 this.setVisible(true);//把窗口可视化
59 }
60 //为游戏说明设置鼠标监听事件
61 public class IntroduceMouseListener extends MouseAdapter{
62
63 //把当前窗口创建出来
64 private ChooseFunction chooseFunction;
65
66 public IntroduceMouseListener(ChooseFunction chooseFunction) {
67 this.chooseFunction = chooseFunction;
68 }
69 @Override
70 public void mouseEntered(MouseEvent e) {
71 jd.setTitle("Airplane big war!!");//设置显示框的标题
72 jd.setIconImage(new ImageIcon("./src/images/icon.png").getImage());//设置显示框的图标
73 // jd.setLocationRelativeTo(getOwner());//并没什么用
74 //jd.setLocationRelativeTo(chooseFunction);//也并没什么用
75 jd.setBounds(415, 200, 450, 380);//设置标题框的位置和大小
76 /* ImageIcon icon = new ImageIcon("./src/images/reduce.gif");
77 // icon.setImage(icon.getImage().getScaledInstance(icon.getIconWidth(),
78 // icon.getIconHeight(), Image.SCALE_DEFAULT));
79 JLabel lb = new JLabel();
80 lb.setIcon(icon);*/
81 JLabel lb=new JLabel(new ImageIcon("./src/images/reduce.gif"));//创建一个JLable放说明的图片
82 jd.add(lb);//把JLable添加到说明框中
83 jd.setVisible(true);//设置说明框的可视化
84 }
85 @Override
86 public void mouseExited(MouseEvent e) {
87 jd.setVisible(false);//把说明框的可视化去掉
88 }
89 }
90 //为play组件添加鼠标事件做准备
91 public class PlayMouseListener extends MouseAdapter{
92 //把当前窗口创建出来
93 private ChooseFunction chooseFunction;
94 //构造函数传值
95 public PlayMouseListener(ChooseFunction chooseFunction) {
96 this.chooseFunction = chooseFunction;
97 }
98 @Override
99 public void mouseClicked(MouseEvent e) {
100 if(e.getButton()==1){
101 //把当前窗口隐藏
102 chooseFunction.setVisible(false);
103 //调用下一个窗口的初始界面
104 new GameStart("images/sky.gif");
105 }
106
107 }
108 }
109
110 //为exit组件添加鼠标事件做准备
111 public class ExitMouseListener extends MouseAdapter{
112 @Override
113 public void mouseClicked(MouseEvent e) {
114 if(e.getButton()==1){
115 int n=JOptionPane.showConfirmDialog(null, "你确定退出吗?");
116 if(n==0){
117 System.exit(0);
118 }
119 }
120 }
121
122 }
123 //主函数入口
124 public static void main(String[] args) {
125 new ChooseFunction().init();
126 }
127 }