GUI JAVA中的图形界面类 Grafic User Interface
Jframe为JAVA中已经写好的类,创建此类对象会出现一个窗口,创建此类可以调用其方法来对窗口进行设置,接下来我们要对其中几个常见的方法进行一个介绍。
JFrame中的组件元素:图片,按钮,文字,进度条。
package com.cn.itheima;
import javax.swing.*;
public class GameJframe extends JFrame {
JFrame gameJframe = new JFrame();
public GameJframe() {
//创建界面的时候给这个界面初始化
this.setSize(603,680);
//设置界面的标题
this.setTitle("拼图单机版");
//设置界置顶
this.setAlwaysOnTop(true);
//设置界面适中
this.setLocationRelativeTo(null);
//设置关闭模式
this.setDefaultCloseOperation(3);
//建议写在最后
this.setVisible(true);
}
}
首先是setSize(width,height)方法,这个方法为设置界面的宽和高,里面的参数的数字代表着多少多少像素,比如上述代码,在输入完参数后就会得到一个宽为603,高为600像素的窗体
其次setTitle为设置界面的标题也就是设置该窗体的标题
setAlwaysOnTop(true);此方法为设置界面置顶就是
this.setLocationRelativeTo(null);此方法为设置界面居中,当你没有调用此方法的时候,每次运行窗口都会在左上角打开,而调用了之后他就会在屏幕中间出现。
this.setDefaultCloseOperation(3);此方法为设置关闭的模式,在没有调用这个方法之前,如果你点击了右上角的X号,程序是不会关闭的,也就是说只是这个窗口给隐藏起来而JVM还在运行,那如果想让程序随着窗口的关闭而终止,就要用到这个方法。让我们来看一下他的源码,可以看到他的参数类型为int,说明一个int类型的数字代表着一种模式分别为0,1,2,3。其分别对应着Do_NoTHING_ON_CLOSE(无论如何都不关闭),HIDE_ON_CLOSE(将其隐藏),DISPOSE_ON_CLOSE(全部窗体关闭程序才会终止),EXIT_ON_CLOSE(关闭调用此方法的窗体再关闭后程序也会随之终止)
最终效果如下图
JMenuBar(菜单制作)
private void InitMenu() {
//创建整个的菜单对象
JMenuBar jMenuBar = new JMenuBar();
//创建菜单上面的两个主要选项
JMenu functionJMenu = new JMenu("功能");
JMenu aboutMenu = new JMenu("关于我们");
//创建选项下面的条目对象
JMenuItem replayItem = new JMenuItem("重新游戏");
JMenuItem reLoginItem = new JMenuItem("重新登录");
JMenuItem closeItem = new JMenuItem("关闭游戏");
JMenuItem accountItem = new JMenuItem("公众号");
//将每一个选项下面的条目添加到选项当中
functionJMenu.add(replayItem);
functionJMenu.add(reLoginItem);
functionJMenu.add(closeItem);
aboutMenu.add(accountItem);
//将选项加入到菜单中
jMenuBar.add(functionJMenu);
jMenuBar.add(aboutMenu);
}
添加图片
JLabel为Jframe中的一个组件。
ImageIcon为组件中的图片对象
打乱图片顺序
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
//创建一个图片ImageIcon的对象
int num = data[i][j];
//创建一个JLable对象(管理容器)
JLabel jLabel = new JLabel( new ImageIcon("C:\\Users\\Justin 梁\\IdeaProjects\\Test\\Puzzlegame\\image\\animal\\animal3\\"+num+".jpg"));
//指定图片位置
jLabel.setBounds(105 * j,105 * i,105,105);
//将容器添加到界面当中
//因为再Jframe中Jframe只是一个框架 其中还有一个窗体是专门用来存放组件的 ContentPane
this.getContentPane().add(jLabel);
}
}
事件
事件源: 按钮,图片,窗体
事件:某些操作
例如 鼠标单击 摁键盘 等等
绑定监听 当事件源发生了某个事件,则执行某段代码
接下来我们主要介绍三种监听器
KeyListener(键盘监听) MouseListener 鼠标监听 ActionListener 动作见提供
ActionListener(动作监听器),但是他只能监听鼠标单击和空格。(因此不常用)
添加监听的方法:
第一种创建一个类来实现接口复写接口中所有的方法,然后再参数列表中写入你写的类。
//添加按钮对象 JButton jbt1 = new JButton("点击"); //设置位置和宽高 jbt1.setBounds(0,0,100,50); //给按钮添加动作监听 //jtb:组件对象,表示你要给那个组件添加时间 //addActionListener : 表示我要给组件添加那个事件的监听(动作监听 鼠标左键和空格) jbt1.addMouseListener(this); jframe1.getContentPane().add(jbt1);
第二种
因此有些实现类只有自己调用,因此在调用类中复写接口方法然后再参数中写其匿名内部类
第三种
让当前界面实现监听接口,然后在该类中复写监听接口的所有抽象方法。参数就可以写为this,当监听事件发生时,就会使用本类中的代码,也就是复写的方法,然后还可以对当前按钮进行判断。
鼠标监听机制MouseListener和键盘监听机制KeyListener
2.鼠标监听机制
鼠标监听机制接口共有五种方法,mouseClicked单击事件,mouseEntered,鼠标划入事件,mouseExit鼠标推出事件,mousePressed按下鼠标时会调用该方法,mouseReleased鼠标释放时会被调用
3.键盘监听机制
很多软件都有快捷键,就是利用键盘监听来实现的。第三种方法具有局限性,有些键监听不到,例如alt等。因此学习前两个就可以了,其中keyPressed方法中,可以利用KeyEvent对象调用getcode方法,一个键对应一个编号
细节:在键盘监听接口中键盘上的每一个键都对应一个值也就是code 其中 getKeyCode方法就是键盘事件的其中的方法 也就是获取你键的值,因此在实际应用中 可以通过获取值来判断你摁的是哪个键,通常用于快捷键的制作。例如大A在这个方法中值为65,这个方法实现的主要功能就是摁住A不松会自动拼接图片、
public void keyPressed(KeyEvent e) {
int code = e.getKeyCode();
if (code == 65)
{
//当摁住A不松的时候完整的图片加载到背景板中
//要先清除背景板上所有的图片
this.getContentPane().removeAll();
//加载出来完整的图片
JLabel all = new JLabel(new ImageIcon(path + "all.jpg"));
all.setBounds(83,134,420,420);
this.getContentPane().add(all);
//加载背景图片
JLabel background = new JLabel(new ImageIcon("C:\\Users\\Justin 梁\\IdeaProjects\\Test\\Puzzlegame\\image\\background.png"));
background.setBounds(40,40,500,560);
this.getContentPane().add(background);
this.getContentPane().repaint();
}
}