(1)GUI 与CLI

   GUI

   •Graphical User Interface(图形用户接口)。

   •用图形的形式,来显示计算机操作的界面,这样更不便更直观。

  CLI

   •Command line User Interface (命令行用户接口)

   •就是常见的Dos命令行操作。

   •须要记忆一些罕用的命令,操作不直观。

   (2)相干的两个包:        

   java.awt:

   Abstract Window ToolKit (形象窗口工具包),须要调用本地零碎办法实现性能。属重量级控件。

  javax.swing:

 在AWT的根底上,建设的一套图形界面零碎,其中提供了更多的组件,而且齐全由Java实现。加强了移植性,属轻量级控件。

   (3)GUI的继承体系
        组件:组件就是对象
            容器组件:是能够存储根本组件和容器组件的组件。
            根本组件:是能够应用的组件,然而必须依赖容器。

   

   (4)事件监听机制
   事件源:事件产生的中央

   事件:就是要产生的事件

   事件处理:就是针对产生的事件做出的解决计划

   事件监听器:就是把事件源和事件关联起来
   (5)适配器模式
    接口
    形象适配器类
    实现类
   (6)案例:
   A:创立窗体案例

public class FrameDemo {    public static void main(String[] args) {        // 创立窗体对象        // Frame f = new Frame();        // Frame(String title)        Frame f = new Frame("林青霞");         // 设置窗体题目        f.setTitle("HelloWorld");        // 设置窗体大小        f.setSize(400, 300); // 单位:像素        // 设置窗体地位        f.setLocation(400, 200);         // 一个办法搞定        //f.setBounds(400, 200, 400, 300);         // 调用一个办法,设置让窗体可见        f.setVisible(true);         // System.out.println("helloworld");    }}

B:窗体敞开案例

import java.awt.Frame;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.awt.event.WindowListener; public class FrameDemo {    public static void main(String[] args) {        // 创立窗体对象        Frame f = new Frame("窗体敞开案例");         // 设置窗体属性        f.setBounds(400, 200, 400, 300);         // 让窗体敞开        //事件源        //事件:对窗体的解决        //事件处理:敞开窗口(System.exit(0));        //事件监听//        f.addWindowListener(new WindowListener() {//            @Override//            public void windowOpened(WindowEvent e) {//            }//            //            @Override//            public void windowIconified(WindowEvent e) {//            }//            //            @Override//            public void windowDeiconified(WindowEvent e) {//            }//            //            @Override//            public void windowDeactivated(WindowEvent e) {//            }//            //            @Override//            public void windowClosing(WindowEvent e) {//                System.exit(0);//            }//            //            @Override//            public void windowClosed(WindowEvent e) {//            }//            //            @Override//            public void windowActivated(WindowEvent e) {//            }//        });                //用适配器类改良        f.addWindowListener(new WindowAdapter() {            @Override            public void windowClosing(WindowEvent e) {                System.exit(0);            }        });         // 设置窗体可见        f.setVisible(true);    }}

C:窗体增加按钮并对按钮增加事件案例。

/* * 针对用户操作的四种性能 */public interface UserDao {public abstract void add();     public abstract void delete();     public abstract void update(); public abstract void find();}
public class UserDaoImpl implements UserDao {     @Override    public void add() {        System.out.println("增加性能");    }     @Override    public void delete() {        System.out.println("删除性能");    }     @Override    public void update() {System.out.println("批改性能");    }     @Override    public void find() {        System.out.println("查找性能");    } }

 /*
 * 问题:
 *  接口(办法比拟多) -- 实现类(仅仅应用一个,也得把其余的实现给提供了,哪怕是空实现)
 *  太麻烦了,
 * 解决方案:
 * 接口(办法比拟多) -- 适配器类(实现接口,仅仅空实现) -- 实现类(用哪个重写哪个)
 */

public abstract class UserAdapter implements UserDao {     @Override    public void add() {    }     @Override    public void delete() {    }     @Override    public void update() {    }     @Override    public void find() {    } }
public class UserDaoImpl2 extends UserAdapter {    @Override    public void add() {    System.out.println("增加性能");    }}
 public class UserDaoDemo {    public static void main(String[] args) {UserDao ud = new UserDaoImpl();    ud.add();        // 我没有说咱们须要四种性能都实现啊。    UserDao ud2 = new UserDaoImpl2();    ud2.add();    }}

界面中的组件布局。

public class FrameDemo {public static void main(String[] args) {        // 创立窗体对象        Frame f = new Frame("增加按钮");        // 设置属性        f.setBounds(400, 200, 400, 300);    // 设置布局为流式布局        f.setLayout(new FlowLayout());         // 创立按钮对象    Button bu = new Button("点我啊");        // bu.setSize(20, 10);         // 把按钮增加到窗体        f.add(bu);         // 设置窗体能够敞开        f.addWindowListener(new WindowAdapter() {            @Override            public void windowClosing(WindowEvent e) {                System.exit(0);            }        });         bu.addActionListener(new ActionListener() {            @Override            public void actionPerformed(ActionEvent e) {            System.out.println("你再点试试");            }        });         // 窗体显示        f.setVisible(true);    }}

D:把文本框外面的数据转移到文本域

import java.awt.Button;import java.awt.FlowLayout;import java.awt.Frame;import java.awt.TextArea;import java.awt.TextField;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent; public class FrameDemo {    public static void main(String[] args) {        / 创立窗体对象        Frame f = new Frame("数据转移");    // 设置窗体属性和布局        f.setBounds(400, 200, 400, 300);        f.setLayout(new FlowLayout());         // 创立文本框        final TextField tf = new TextField(20);        // 创立按钮        Button bu = new Button("数据转移");        // 创立文本域        final TextArea ta = new TextArea(10, 40);         // 把组件增加到窗体        f.add(tf);        f.add(bu);        f.add(ta);         // 设置窗体敞开        f.addWindowListener(new WindowAdapter() {            @Override            public void windowClosing(WindowEvent e) {            System.exit(0);            }    });         // 对按钮增加事件        bu.addActionListener(new ActionListener() {            @Override            public void actionPerformed(ActionEvent e) {                // 获取文本框的值                String tf_str = tf.getText().trim();    // 清空数据                tf.setText("");                 // 设置给文本域                // ta.setText(tf_str);        // 追加和换行                ta.append(tf_str + "\r\n");                                //获取光标                tf.requestFocus();            }        });         // 设置窗体显示        f.setVisible(true);    }}

E:更改背景色

import java.awt.Button;import java.awt.Color;import java.awt.FlowLayout;import java.awt.Frame;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;public class FrameDemo {    public static void main(String[] args) {        // 创立窗体对象final Frame f = new Frame("更改背景色");        // 设置窗体属性和布局    f.setBounds(400, 200, 400, 300);        f.setLayout(new FlowLayout());         // 创立四个按钮        Button redButton = new Button("红色");        Button greenButton = new Button("绿色");        Button buleButton = new Button("蓝色");         // 增加按钮        f.add(redButton);        f.add(greenButton);        f.add(buleButton);         // 设置窗体敞开        f.addWindowListener(new WindowAdapter() {            @Override            public void windowClosing(WindowEvent e) {                System.exit(0);            }        });         // 对按钮增加动作事件        // redButton.addActionListener(new ActionListener() {        // @Override        // public void actionPerformed(ActionEvent e) {        // f.setBackground(Color.RED);        / }        // });         // 对按钮增加鼠标点击事件        // redButton.addMouseListener(new MouseAdapter() {        // @Override        // public void mouseClicked(MouseEvent e) {        // f.setBackground(Color.RED);        // }        // });         // 对按钮增加鼠标的进入事件        redButton.addMouseListener(new MouseAdapter() {            @Override            public void mouseEntered(MouseEvent e) {                f.setBackground(Color.RED);            }        });         redButton.addMouseListener(new MouseAdapter() {            @Override        public void mouseExited(MouseEvent e) {                f.setBackground(Color.WHITE);            }        });         greenButton.addMouseListener(new MouseAdapter() {            @Override            public void mouseEntered(MouseEvent e) {                f.setBackground(Color.GREEN);            }        });         greenButton.addMouseListener(new MouseAdapter() {            @Override            public void mouseExited(MouseEvent e) {                f.setBackground(Color.WHITE);            }        });         buleButton.addMouseListener(new MouseAdapter() {            @Override            public void mouseEntered(MouseEvent e) {                f.setBackground(Color.BLUE);            }        });         buleButton.addMouseListener(new MouseAdapter() {            @Override            public void mouseExited(MouseEvent e) {                f.setBackground(Color.WHITE);            }        });         // 设置窗体显示        f.setVisible(true);    }}

  F:设置文本框外面不能输出非数字字符

import java.awt.FlowLayout;import java.awt.Frame;import java.awt.Label;import java.awt.TextField;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent; /* * 你输出的如果是非数字字符,就勾销你键盘录入的成果。 */public class FrameDemo {    public static void main(String[] args) {    // 创立窗体对象并设置属性        Frame f = new Frame("不能输出非数字字符");        f.setBounds(400, 200, 400, 300);        f.setLayout(new FlowLayout());         // 创立Label标签对象        Label label = new Label("请输出你的QQ号码,不能是非数字,不信你试试");        TextField tf = new TextField(40);     // 增加到窗体上        f.add(label);        f.add(tf);         // 设置窗体敞开        f.addWindowListener(new WindowAdapter() {            @Override        public void windowClosing(WindowEvent e) {                System.exit(0);            }        });         // 给文本框增加事件        tf.addKeyListener(new KeyAdapter() {            @Override            public void keyPressed(KeyEvent e) {                // 如果你获得的字符不是数字字符就勾销事件                // 思路:先获取字符,判断字符,勾销事件                // char getKeyChar()                  char ch = e.getKeyChar();//                System.out.println(ch);                if(!(ch>='0' && ch<='9')){                    e.consume();                }            }        });         // 设置窗体可见        f.setVisible(true);    }}

G:一级菜单

import java.awt.FlowLayout;import java.awt.Frame;import java.awt.Menu;import java.awt.MenuBar;import java.awt.MenuItem;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent; /* * 一级菜单 */public class FrameDemo {    public static void main(String[] args) {        // 创立窗体对象并设置属性        Frame f = new Frame("一级菜单");        f.setBounds(400, 200, 400, 300);        f.setLayout(new FlowLayout());         // 创立菜单栏        MenuBar mb = new MenuBar();        // 创立菜单        Menu m = new Menu("文件");        // 创立菜单项        MenuItem mi = new MenuItem("退出零碎");         // 谁增加谁呢        m.add(mi);        mb.add(m);         // 设置菜单栏        f.setMenuBar(mb);         // 设置窗体敞开        f.addWindowListener(new WindowAdapter() {    @Override            public void windowClosing(WindowEvent e) {                System.exit(0);            }        });         mi.addActionListener(new ActionListener() {            @Override            public void actionPerformed(ActionEvent e) {                System.exit(0);            }        });         // 设置窗体可见        f.setVisible(true);    }}

H:多级菜单

import java.awt.FlowLayout;import java.awt.Frame;import java.awt.Menu;import java.awt.MenuBar;import java.awt.MenuItem;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.io.IOException; /* * 多级菜单 */public class FrameDemo {public static void main(String[] args) {        // 创立窗体对象并设置属性    final Frame f = new Frame("多级菜单");    f.setBounds(400, 200, 400, 300);        f.setLayout(new FlowLayout());                final String name = f.getTitle(); // 创立菜单栏        MenuBar mb = new MenuBar();        // 创立菜单        Menu m1 = new Menu("文件");        Menu m2 = new Menu("更改名称");        // 创立菜单项        final MenuItem mi1 = new MenuItem("好好学习");final MenuItem mi2 = new MenuItem("天天向上");        MenuItem mi3 = new MenuItem("复原题目");        MenuItem mi4 = new MenuItem("关上记事本");    MenuItem mi5 = new MenuItem("退出零碎");         // 谁增加谁呢    m2.add(mi1);        m2.add(mi2);        m2.add(mi3);                m1.add(m2);        m1.add(mi4);        m1.add(mi5);                mb.add(m1);         // 设置菜单栏        f.setMenuBar(mb);         // 设置窗体敞开    f.addWindowListener(new WindowAdapter() {            @Override            public void windowClosing(WindowEvent e) {                System.exit(0);            }        });                mi1.addActionListener(new ActionListener() {            @Override            public void actionPerformed(ActionEvent e) {                f.setTitle(mi1.getLabel());            }        });                mi2.addActionListener(new ActionListener() {    @Override            public void actionPerformed(ActionEvent e) {                f.setTitle(mi2.getLabel());            }        });                mi3.addActionListener(new ActionListener() {            @Override            public void actionPerformed(ActionEvent e) {    f.setTitle(name);            }        });                mi4.addActionListener(new ActionListener() {            @Override            public void actionPerformed(ActionEvent e) {                Runtime r = Runtime.getRuntime();    try {                    r.exec("notepad");                } catch (IOException e1) {                    e1.printStackTrace();                }            }        });         mi5.addActionListener(new ActionListener() {            @Override            public void actionPerformed(ActionEvent e) {            System.exit(0);            }        });         // 设置窗体可见        f.setVisible(true);    }}

</article>
总结:
总的来说:GUI : Graphical User Interface (图形用户接口)。
用图形的模式显示计算机操作的界面,更直观。