java基础之GUI

概述

Graphical User Interface(图形用户接口):用图形的方式来显示计算机操作界面。

  • java提供的两个开发包:

    java.Awt:Abstract Window ToolKit (抽象窗口工具包),需要调用本地系统方法实现功能。属重量级控件,不同情况下显示效果可能不一致。
    javax.Swing:在AWT的基础上,建立的一套图形界面系统,其中提供了更多的组件,而且完全由Java实现。增强了移植性,属轻量级控件,保证了在不同系统中显示效果的一致性,开发中多用此包。

继承关系图:
这里写图片描述

创建图形化界面的过程:

  • 1,创建frame窗体。
    2,对窗体进行基本设置。
    比如大小,位置,布局。
    3,定义组件。
    4,将组件通过窗体的add方法添加到窗体中。
    5,让窗体显示,通过setVisible(true)

该过程一般放在初始化方法中:

    public void init()
    {
        //创建窗体
        f = new Frame("my frame");

        //窗体基本设置
        f.setBounds(300,100,600,500);
        f.setLayout(new FlowLayout());

        //定义组件
        tf = new TextField(20);//文本框
        but = new Button("my button");//按钮

        //将组件添加到窗体
        f.add(tf);
        f.add(but);

        //加入监听动作
        myEvent();

        //将窗体设为可见
        f.setVisible(true);

    }

事件监听机制

事件监听机制的特点:
1,事件源。
2,事件。
3,监听器。
4,事件处理。

事件源:awt包或者swing包中的那些图形界面组件。
事件:事件源都有自己特有的对应事件和共性事件(鼠标、键盘事件)
监听器:将可以触发某一个事件的动作(不只一个动作)都已经封装到了监听器中。

以上三者,在java中都已经定义好了。
直接获取其对象来用就可以了。
我们要做的事情是,就是对产生的动作进行处理。
一个界面的监听一般封装在一个方法内,如上面的myEvent()。

监听之 窗体

        f.addWindowListener(new WindowAdapter()//窗体监听器的子类-窗体适配器的匿名子类
        {
            public void windowClosing(WindowEvent e)//监听到窗体上发生windowClosing事件时,
            {
                f.setVisible(false);//将窗体设为不可见
                //System.exit(0); //也可以直接退出系统
            }
        });

监听之 按钮

        but.addActionListener(new ActionListener()//按钮的监听器无需适配器,
        {
            public void actionPerformed(ActionEvent e)//只有一个事件动作:点击(actionPerformed)
            {
                d.setVisible(false);//内部可定义其他组件如何变化,而不只是自己
            }
        });

监听之 菜单

菜单栏–菜单–子菜单-菜单项 ————创建过程

bar = new MenuBar();//创建一个菜单栏对象
fileMenu = new Menu("文件");//创建一个菜单对象
childMenu = new Menu("子菜单");//创建一个菜单对象作为子菜单
openItem = new MenuItem("打开");//创建菜单项
saveItem = new MenuItem("保存");


fileMenu.add(openItem);//菜单项添加到菜单
fileMenu.add(saveItem);
fileMenu.add(childMenu);//将子菜单也添加到菜单上

bar.add(fileMenu);//将菜单添加到菜单栏

f.setMenuBar(bar);//将菜单栏放到窗体上

监听:菜单和子菜单的鼠标移入事件无需定义,只需要定义菜单项的点击事件即可

        saveItem.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {

            }
        });

监听之共性时间:键盘

        tf.addKeyListener(new KeyAdapter()//给某一组件添加键盘监听器
        {
            public void keyPressed(KeyEvent e)//监听键盘的keyPressed动作
            {
                int code = e.getKeyCode();
                if(!(code>=KeyEvent.VK_0 && code<=KeyEvent.VK_9))
                {
                    System.out.println(code+".....是非法的");
                    e.consume();
                }


            }
        });

监听之共性事件: 鼠标

        but.addMouseListener(new MouseAdapter()//给but组件添加鼠标监听
        {
            private int count = 1;
            private int clickCount = 1;
            public void mouseEntered(MouseEvent e) //鼠标进入该组件上方时
            {
                System.out.println("鼠标进入到该组件"+count++);
            }
            public void mouseClicked(MouseEvent e)//鼠标点击时
            {
                if(e.getClickCount()==2)
                    System.out.println("双击动作"+clickCount++);
            }
        });
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值