黑马程序员-11 图形用户界面GUI

时间:2023-01-27 13:18:44

------- android培训、java培训、期待与您交流! ----------

常见的布局管理器:
FlowLayout(流式布局管理器)
1.从左到右的书序排列:Panel默认的布局管理器

BorderLayout(边界布局管理器)
东南西北中
Frame默认的布局管理器

GridLayout(网格布局管理器)
规则的矩阵

CardLayout(卡片布局管理器)
选项卡

GridBagLayout(网格包布局管理器)
非规则的矩阵

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

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

以上三者,在java中都已经定义好了。
直接获取其对象来用就可以了。
我们要做的事情是,就是对产生的动作进行处理。

=======================================================
窗体事件

(1)addWindowListener(WindowListener wl),添加一个窗口监听器对象给窗口,用于监控窗口事件。
(2)WindowListener接口规定的方法:windowActivated(WindowEvent e),将窗口看设置为活动窗口时调用;windowClosed(WindowEvent e)对窗口调用dispose而将其关闭时调用;windowClosing(WindowEvent e)用户试图从窗口的系统菜单中关闭窗口时调用;windowDeactivated(windowEvent e)当窗口不再是活动窗口时调用;windowDeiconified(WindowEvent e)窗口从最小化状态变为正常状态时调用;windowIconified(WindowEvent e)窗口从正常状态变为最小化状态时调用;windowOpened(WindowEvent e)窗口首次变为可见时调用。
(3)WindowAdapter类是WindowListener接口的实现类,用于快速建立事件监听器,在实际使用中,只要建立一个继承WindowAdapter类并根据需要覆写了对应窗口事件的方法的类,然后在addWindowListener的参数里传递这个类的对象即可。
(4)除了WindowListener规定的方法,WindowAdapter还建立一些自己的方法,具体使用中可以查看API文档。

 

import java.awt.*;
import java.awt.event.*;

class  AwtDemo
{
    public static void main(String[] args) 
    {
        Frame f = new Frame("my awt");
        f.setSize(500,400);
        f.setLocation(300,200);
        f.setLayout(new FlowLayout());


        Button b = new Button("我是一个按钮");
        
        f.add(b);


        f.addWindowListener(new WindowAdapter()
        {
            public void windowClosing(WindowEvent e)
            {
                System.out.println("我关");
                System.exit(0);
            }
            public void windowActivated(WindowEvent e) 
            {
                System.out.println("我活了。");

            }
            
            public void windowOpened(WindowEvent e) 
            {
                System.out.println("我被打开了,hahahhahah");
            }

        });
        



        f.setVisible(true);

        //System.out.println("Hello World!");
    }
}

 

=============================================================
Action事件

(1)为Button(按钮)添加按钮事件监听器:but.addActionListener(ActionListener e);语句为but按钮添加一个监听器。
(2)ActionListener和WindowListener一样,也是一个接口,在建立作为参数的对象前,需要建立一个类继承它并覆写actionPerformed(ActionEvent e)方法。


鼠标事件
(1)为Button(按钮)添加鼠标事件监听器:but.addMouseListener(MouseListener e),同样MouseListener也是一个接口,它有一个实现子类MouseAdapter,具体使用时一般参数都是传递一个继承并覆写MouseAdapter的类对象。
(2)MouseAdapter具有的方法:
a、mouseClicked(MouseEvent e),响应单击事件;
b、mouseEntered(MouseEvent e),鼠标进入到组件时调用;
c、mouseExited(MouseEvent e),鼠标离开组件时调用;
d、mousePressed(MouseEvent e),鼠标按键在组件上按下时调用;
e、mouseReleased(MouseEvent e),鼠标在组件上释放时调用;
f、mouseDragged(MouseEvent e),鼠标按键在组件上按下并拖动时调用;
g、mouseMoved(MouseEvent e),鼠标光标移动到组件上但无按键按下时调用;
h、mouseWheelMoved(MouseEvent e),鼠标滚轮旋转时调用;
(3)判断双击事件:MouseEvent类具有点击次数判断方法getClickCount(),所以只要判断e.getClickCount()==2,就可以了。以及左右键等等的数据判断方法都存在于MouseEvent类中。


键盘事件
(1)为Button(按钮)添加键盘事件监听器:but.addKeyListener(KeyListener e),同样KeyListener也是一个接口,它有一个实现子类KeyAdapter,具体使用时一般参数都是传递一个继承并覆写KeyAdapter的类对象。
(2)KeyAdapter具有的方法:
a、keyPressed(KeyEvent e),按下某个按键时调用此方法;
b、keyRelease(KeyEvent e),释放某个按键时调用次方法;
c、keyTyped(KeyEvent e),键入某个键时调用此方法;
(3)KeyEvent类的常用方法:
a、getKeyChar();返回与事件中的键相关联的字符;
b、getKeyCode();返回事件中的键关联的整数KeyCode;
c、static String getKeyText(int keycode),这是一个静态方法,返回描述 keyCode 的 String,如 "HOME"、"F1" 或 "A"。一般使用为KeyEvent.getKeyCode(e.getKeyCode())。