GUI图形界面

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();
        }
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值