java之图形化界面

时间:2022-11-08 19:31:10

用户与计算机进行交换的方式有两种:

GLI:Command lin User Interface(命令行用户接口),也就是常见的dos窗口,它需要记住一些常用的命令,操作不直观方便。

GUI:Graphical User Interface(图形用户接口),用图形的方式,来显示计算机操作的界面,这样更方便直观。

这两种交换方式就对应两种交互界面:命令行界面和图形化界面。

 

Java为GUI提供的对象都在java.awt和javax.swing这两个包中。

 

Frame

Frame是windows的子类,它启动时,要通过setVisiable(true)方法来启动窗口。

GUI中,启动一个窗体就是启动一个前台线程,虽然main函数运行完了,但前台线程没结束,所以程序也就不会结束。

 

布局

容器中的组件的排放方式,就是布局。

常见的布局管理器:•

FlowLayout(流式布局管理器):从左到右的顺序排列。Panel默认的布局管理器。

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

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

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

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

 

事件监听

事件监听机制由四部分组成:事件源(组件)、事件(Event)、监听器(Listener)和事件处理(引发事件后的处理方式)。

事件源:就是java.awt和javax.swing包中的GUI组件。

事件:每个事件源都有自己的特有事件和共性事件(鼠标事件和键盘事件即是它们的共性事件)。

监听器:将可以触发某一事件的动作(不止一个)都封装在了监听器中。

事件处理:事件源、事件和监听器在java中已经定义好了,直接获取其对象来用就可以了,我们要做的是对产生的动作进行处理。

 

Action事件

按钮对应的是ActionEvent事件,ActionEvent对应的是ActionListener监听器。只用按钮活动,就能执行,而键盘和鼠标都能让按钮活动。所以,如果对按钮处理的动作只有一种,最好使用ActionListener,因为鼠标键盘都会触发它。

ActionListener监听器接口只用一个方法,所以没有相应的Adapter,它是三个没有配适器的监听器接口之一。

import java.swing.*;  
class  FrameDemo  
{  
    private Frame f;  
    private Button but;  
  
    FrameDemo()  
    {  
        init();  
    }  

    public void init()
    {  
        f= new Frame("day22-MyFrame");  
  
        f.setBounds(300,100,600,500);  
        f.setLayout(new FlowLayout());  
        but = new Button("my button");  
        f.add(but);     
        myEvent();  
        f.setVisible(true);  
    }  
      
    public void myEvent()  
    {  
        f.addWindowListener(new WindowAdapter()  
        {  
            public void windowClosing(WindowEvent e)  
            {  
                System.out.println("关闭窗口");  
                System.exit(0);//这个方法的 关闭的是虚拟机,退出虚拟机,当然就退出了程序    
            }  
        });  
        but.addActionListener(new ActionListener()  
        {  
            public void actionPerformed(ActionEvent e)   
            {  
                System.out.println("退出");  
                System.exit(0);  
            }  
  
        });  
    }  

    public static void main(String[] args)   
    {  
        new FrameDemo();  
    }  
}