6. GUI

来源:互联网 发布:java视频教程下载 编辑:程序博客网 时间:2024/06/06 02:40

1.GUI 图形用户界面:
Graphical User Interface(图形用户接口)

CUL 命令行界面:
Command line User Interface(命令行用户接口)
如:Dos命令行操作。

Java为GUI提供的对象都存在java.awt 和 java.swing 两个包中。
(Java做图形化界面相对较少,得先装虚拟机。一般用C++等,Windows内置了C++的解析器。)

2.awt , swing包

1.java.awt: Abstract Window ToolKit(抽象窗口工具包),需要调用本地系统方法实现功能。属于重量级控件。2.javax.swing: 在AWT的基础上,建立一套图形界面系统,其中提供了更多的组件,而且完全由Java实现,增强了移植性,属于轻量级控件。

3.AWT
(1)继承关系图:
这里写图片描述
api:

component 是一个具有图形表示能力的对象,可在屏幕上显示,并可与用户进行交互。典型图形用户界面中的按钮、复选框和滚动条都是组件示例。
Component 类是与菜单不相关的 Abstract Window Toolkit 组件的抽象超类。还可以直接扩展类 Component 来创建一个轻量级组件。轻量级组件是与本机不透明窗口不相关的组件。

类 Container
一般的 Abstract Window Toolkit(AWT) 容器对象是一个可包含其他 AWT 组件的组件。
添加到容器中的组件放在一个列表中。列表的顺序将定义组件在容器内的正向堆栈顺序。如果将组件添加到容器中时未指定索引,则该索引将被添加到列表尾部(此后它位于堆栈顺序的底部)。

(2)布局管理器:
布局管理器

坐标式布局。

4.Frame演示:

public class AWTDemo {    public static void main(String[] args) {        Frame f =new Frame("my frame");//      f.setSize(500, 400);   //像素值//      f.setLocation(400, 200);  //坐标位置        f.setBounds(400, 200, 500, 400);        f.setLayout(new FlowLayout()); //设置流式布局,默认上居中        Button but =new Button("一个按钮");        f.add(but); //将按钮放在窗体中。窗体默认布局是边界式布局,默认窗口全占        f.setVisible(true);    }}

5.事件监听机制 组成:

1.事件源(组件):小强2.事件(Event):被揍3.监听器(Listener):保镖4.事件处理(引发事件后的处理方式):还击

这里写图片描述

示例1: 添加窗口监听器Frame.addWindowListener(WindowListener w)WindowListener接口的(适配器类)抽象子类:WindowAdapterpublic class AWTDemo {    public static void main(String[] args) {        Frame f =new Frame("my frame");//      f.setSize(500, 400);   //像素值//      f.setLocation(400, 200);  //坐标位置        f.setBounds(400, 200, 500, 400);        f.setLayout(new FlowLayout()); //设置流式布局,默认上居中        Button but =new Button("一个按钮");        f.add(but); //将按钮放在窗体中。窗体默认布局是边界式布局,默认窗口全占        f.addWindowListener(new WindowAdapter(){              //添加监听器,参数是WindowListener接口对象,即继承它的抽象子类WindowAdapter            //然后重写要用到的监听方法。            @Override            public void windowClosing(WindowEvent e) {                super.windowClosing(e); //              System.out.println("closing......");                System.exit(0);            }        });        //WindowListener接口的抽象子类WindowAdapter实现了该接口的所有方法,但是没有抽象方法,        //目的是为了方便创建监听器对象。继承它覆盖其中一个方法就可以了        f.setVisible(true);    }}
示例2:添加按钮监听器Button.addActionListener(ActionListener a)ActionListener接口只有一个抽象方法,直接实现。public class AWTDemo {    public static void main(String[] args) {        Frame f =new Frame("my frame");//      f.setSize(500, 400);   //像素值//      f.setLocation(400, 200);  //坐标位置        f.setBounds(400, 200, 500, 400);        f.setLayout(new FlowLayout()); //设置流式布局,默认上居中        Button but =new Button("退出");        f.add(but); //将按钮放在窗体中。窗体默认布局是边界式布局,默认窗口全占        //在按钮上加上一个监听。        but.addActionListener(new ActionListener(){            //添加按钮监听器,参数是ActionListener接口对象,它只有一个抽象方法,所以没有适配器类,            //直接实现这个接口,然后实现抽象方法。            @Override            public void actionPerformed(ActionEvent e) { //事件和事件对象                                                                                        //事件发生时事件对象自动返回                     System.exit(0);  //事件处理            }        });        f.addWindowListener(new WindowAdapter(){              //添加窗口监听器,参数是WindowListener接口对象,即继承它的(适配器类)抽象子类WindowAdapter            //然后重写要用到的监听方法。            @Override            public void windowClosing(WindowEvent e) { //事件和事件对象                                                                                        //事件发生时事件对象自动返回                super.windowClosing(e); //              System.out.println("closing......");                System.exit(0);   //事件处理            }        });        //WindowListener接口的(适配器类)抽象子类WindowAdapter实现了该接口的所有方法,但是没有抽象方法,        //目的是为了方便创建监听器对象。继承适配器类覆盖其中一个方法就可以了        f.setVisible(true);    }}

6.鼠标事件,窗口事件:

public class MouseAndKeyDemo {    private Frame f;    private TextField tf;    private Button but;    public MouseAndKeyDemo(){            init();    }    private void init() {        f = new Frame("演示鼠标和键盘监听");        f.setBounds(400, 200, 500, 400);        f.setLayout(new FlowLayout());        tf = new TextField(15);        but = new Button("一个按钮");        f.add(tf);        f.add(but);        myEvent();        f.setVisible(true);    }    private void myEvent() {        //给文本框添加键盘监听        tf.addKeyListener(new KeyAdapter() {            private int count = 1;            @Override            public void keyPressed(KeyEvent e) {                super.keyPressed(e);//              if(e.getKeyCode() == KeyEvent.VK_ENTER){  //回车//                  tf.setText(""+count++);//              }//              if(e.isControlDown() &&( e.getKeyCode() == KeyEvent.VK_ENTER)){                                                                                                  //ctrl+回车//                  tf.setText(""+count++);//              }//                              int code = e.getKeyCode();                if(!(code>=KeyEvent.VK_0&& code<=KeyEvent.VK_9)){                    e.consume();//不会按照默认的方式,由产生此事件的源代码来处理此事件。                    System.out.println("必须是数字!");                }            }        });        //窗口退出事件        f.addWindowListener(new WindowAdapter() {            @Override            public void windowClosing(WindowEvent e) {                super.windowClosing(e);                System.exit(0);            }        });        //在按钮上添加一个鼠标监听事件(当鼠标监听和按钮监听同时存在时,鼠标监听优先)        but.addMouseListener(new MouseAdapter() {            private int count = 1;                      @Override            public void mouseClicked(MouseEvent e) {                                super.mouseClicked(e);                if(e.getClickCount()==2){       //双击                        tf.setText(""+ count++);                }            }        });    }    public static void main(String[] args) {        new MouseAndKeyDemo();    }}

7.Swing演示,安装GUI插件jigloo:

8.菜单