黑马程序员——【Java基础】——GUI(图形用户界面)
2014-10-04 16:19
495 查看
---------- android培训、java培训、期待与您交流! ----------
一、概述
1、GUI(GraphicalUser Interface):又称图形用户界面,是计算机用户与计算机交互的一种方式。
2、用户与计算机交互的方式有两种:GUI和CLI。
(1)GUI(Graphical User Interface):图形用户接口,用图形方式,来显示计算机操作界面,方便直观。
(2)CLI(Command LineUser Interface):命令行用户接口,即常见的Dos命令行操作,须记住一些命令,操作不直观。
3、Java提供的GUI对象都存在于java.Awt和javax.Swing两个包中,其中:
(1)java.Awt(Abstract Window Toolkit):即抽象窗口工具包,调用本地系统方法实现功能,属重量级控件。
(2)javax.Swing包:在AWT的基础上建立的一套图形界面系统,有更多的组件,且完全由java实现,属轻量级控件。
二、继承关系图
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/04/b7ea450ceb36af7b98c9c3774be9f221.jpg)
注:Container是容器型组件,该组件中可以通过add方法添加其他组件。Container常用子类:Window、Panel(不能单独存在)。
三、布局管理器
1、布局:容器中的组件排列方式。
2、常见的布局管理器:
● FlowLayout(流式布局管理器)
|---从左向右排列,Panel默认排列方式。
● BorderLayout(边界式布局管理器)
|---东南西北中的排列方式,是Frame的默认布局管理。
● GridLayout(网格式布局管理器)
|---规则的矩阵。
● CardLayout(卡片式布局管)
|---即选项卡。
● GridBayLayout:(网格包布局管理器)
|---非规则矩阵
四、Frame演示
(一)Frame创建步骤
1、创建Frame窗体:
Frame f = new Frame("my Frame");//可设置标题,即窗体名字
2、对窗体进行基本设置:如大小,位置,布局等:
f.setSize(int wight,int hight);//窗体大小设置
f.setLocation(int x,int y);//窗体显示位置设置,横纵坐标
f.setBounds(int x,int y,int wight,int hight),也可以直接用这个方法对大小和位置设置
f.setLayout(Layout layout),参数为指定的布局管理器,如FlowLayout
3、定义组件:
Button b = new Button(“my Button”);//可设置组件的名称
4、将组件通过add方法添加到窗体中:
f.add(b);//将按钮组件添加进窗体
5、让窗体显示:
f.setVisible(boolean b);//通过设置参数是true还是false是否显示窗体
(二)Frame演示示例
五、事件监听机制
(一)事件监听机制组成
(1)事件源(组件)。
(2)事件(Event)。
(3)监听器(Listener)。
(4)事件处理(引发事件后的处理方式)。
(二)事件监听机制流程图
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/04/bf5d1feb54d9fe226a357a24b5e5de8e.jpg)
(三)事件处理的步骤
(1)确定事件源(容器或组件)。通过事件源对象的addXXXListener()方法将监听器(Listener)注册到该事件源上。该方法中接收XXXListener的子类对象,或者XXXListener的子类XXXAdapter的子类对象。
(2)一般用匿名内部类来表示。在覆盖方法的时候,方法的参数一般是XXXEvent类型的变量接收。
说明:
(1)事件触发后会将事件打包成对象传递给覆写方法中参数的变量。(其中包括事件源对象,通过getSource()或者getComponent()获取。)
(2)若用子类实现WindowListener接口,就需要覆盖其中的7个方法,可只用到其中的关闭动作,其他动作未用到,但却必须重写全部。因为WindowLister的子类WindowAdapter(适配器)已经实现此接口,并覆盖了其中所有方法。那么只需继承WindowAdapter,覆盖需要的方法即可。
(3)明确事件,并对事件进行处理,其实,添加什么监听器就需要添加什么事件。
(四)应用示例
1、/* 键盘事件和鼠标事件 */
2、列出指定目录下的内容,当输入的路径不正确时,给出错误提示信息。
---------- android培训、java培训、期待与您交流! ----------
一、概述
1、GUI(GraphicalUser Interface):又称图形用户界面,是计算机用户与计算机交互的一种方式。
2、用户与计算机交互的方式有两种:GUI和CLI。
(1)GUI(Graphical User Interface):图形用户接口,用图形方式,来显示计算机操作界面,方便直观。
(2)CLI(Command LineUser Interface):命令行用户接口,即常见的Dos命令行操作,须记住一些命令,操作不直观。
3、Java提供的GUI对象都存在于java.Awt和javax.Swing两个包中,其中:
(1)java.Awt(Abstract Window Toolkit):即抽象窗口工具包,调用本地系统方法实现功能,属重量级控件。
(2)javax.Swing包:在AWT的基础上建立的一套图形界面系统,有更多的组件,且完全由java实现,属轻量级控件。
二、继承关系图
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/04/b7ea450ceb36af7b98c9c3774be9f221.jpg)
注:Container是容器型组件,该组件中可以通过add方法添加其他组件。Container常用子类:Window、Panel(不能单独存在)。
三、布局管理器
1、布局:容器中的组件排列方式。
2、常见的布局管理器:
● FlowLayout(流式布局管理器)
|---从左向右排列,Panel默认排列方式。
● BorderLayout(边界式布局管理器)
|---东南西北中的排列方式,是Frame的默认布局管理。
● GridLayout(网格式布局管理器)
|---规则的矩阵。
● CardLayout(卡片式布局管)
|---即选项卡。
● GridBayLayout:(网格包布局管理器)
|---非规则矩阵
四、Frame演示
(一)Frame创建步骤
1、创建Frame窗体:
Frame f = new Frame("my Frame");//可设置标题,即窗体名字
2、对窗体进行基本设置:如大小,位置,布局等:
f.setSize(int wight,int hight);//窗体大小设置
f.setLocation(int x,int y);//窗体显示位置设置,横纵坐标
f.setBounds(int x,int y,int wight,int hight),也可以直接用这个方法对大小和位置设置
f.setLayout(Layout layout),参数为指定的布局管理器,如FlowLayout
3、定义组件:
Button b = new Button(“my Button”);//可设置组件的名称
4、将组件通过add方法添加到窗体中:
f.add(b);//将按钮组件添加进窗体
5、让窗体显示:
f.setVisible(boolean b);//通过设置参数是true还是false是否显示窗体
(二)Frame演示示例
class FrameDemo{ 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); } }
五、事件监听机制
(一)事件监听机制组成
(1)事件源(组件)。
(2)事件(Event)。
(3)监听器(Listener)。
(4)事件处理(引发事件后的处理方式)。
(二)事件监听机制流程图
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/04/bf5d1feb54d9fe226a357a24b5e5de8e.jpg)
(三)事件处理的步骤
(1)确定事件源(容器或组件)。通过事件源对象的addXXXListener()方法将监听器(Listener)注册到该事件源上。该方法中接收XXXListener的子类对象,或者XXXListener的子类XXXAdapter的子类对象。
(2)一般用匿名内部类来表示。在覆盖方法的时候,方法的参数一般是XXXEvent类型的变量接收。
Frame f= new Frame("演示鼠标和键盘监听"); f.addWindowlistener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.exit(0);//表示关闭窗口 } });
说明:
(1)事件触发后会将事件打包成对象传递给覆写方法中参数的变量。(其中包括事件源对象,通过getSource()或者getComponent()获取。)
(2)若用子类实现WindowListener接口,就需要覆盖其中的7个方法,可只用到其中的关闭动作,其他动作未用到,但却必须重写全部。因为WindowLister的子类WindowAdapter(适配器)已经实现此接口,并覆盖了其中所有方法。那么只需继承WindowAdapter,覆盖需要的方法即可。
(3)明确事件,并对事件进行处理,其实,添加什么监听器就需要添加什么事件。
(四)应用示例
1、/* 键盘事件和鼠标事件 */
import java.awt.Button; import java.awt.FlowLayout; import java.awt.Frame; import java.awt.TextField; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; 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(35); but = new Button("一个按钮"); f.add(tf); f.add(but); myEvent(); f.setVisible(true); } //注册事件 private void myEvent() { // 给文本框添加键盘监听。 tf.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { if (e.isControlDown() && e.getKeyCode() == KeyEvent.VK_ENTER) { System.out.println("enter run ..."); } } }); f.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.exit(0); } }); // 在按钮上添加一个鼠标监听. but.addMouseListener(new MouseAdapter() { private int count = 1; @Override public void mouseClicked(MouseEvent e) { if (e.getClickCount() == 2) tf.setText("mouse double click..." + count++); } }); } public static void main(String[] args) { new MouseAndKeyDemo(); } }
2、列出指定目录下的内容,当输入的路径不正确时,给出错误提示信息。
/* 列出指定目录下的内容,当输入的路径不正确时,给出错误提示信息。 */ import java.io.*; import java.awt.*; import java.awt.event.*; class MyWindowDemo { // 定义所需组件引用 private Frame f; private Button but, bok; private TextField tf; private TextArea ta; private Dialog d; private Label lab; // 构造函数 MyWindowDemo() { init(); } // 窗体基本设置于功能实现 public void init() { // 组件实例化 f = new Frame("我的Window"); but = new Button("跳转"); tf = new TextField(58); ta = new TextArea(27, 65); // 基本设置 f.setBounds(300, 150, 500, 500); f.setLayout(new FlowLayout()); // 添加组件 f.add(tf); f.add(but); f.add(ta); // 窗体事件 myEvent(); // 窗体显示 f.setVisible(true); } // 注册事件 public void myEvent() { // 窗体关闭功能 f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); // “跳转”按钮事件 but.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { showFile();// 列出目录内容在文本区中 } }); // 文本框键盘事件 tf.addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent e) { // 如果键盘按下Enter键,就将目录内容显示在文本区中 if (e.getKeyCode() == KeyEvent.VK_ENTER) showFile(); } }); } // 目录内容显示在文本区中方法 private void showFile() { String path = tf.getText();// 获取输入的路径 File dir = new File(path);// 将路径封装成对象 // 判断输入的路径是否存在,且是否是文件夹 if (dir.exists() && dir.isDirectory()) { ta.setText("");// 清空文本区中的内容 String names[] = dir.list();// 列出目录下的内容 for (String name : names) { ta.append(name + "\r\n");// 添加进文本区中 } } else { // 对话框基本设置 d = new Dialog(f, "错误提示", true); d.setBounds(400, 200, 280, 150); d.setLayout(new FlowLayout()); bok = new Button("确定"); lab = new Label(); // 添加按钮和文本 d.add(bok); d.add(lab); // 对话框关闭事件 d.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { d.setVisible(false);// 退出对话框 } }); // “确定”按钮事件 bok.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { d.setVisible(false);// 按确认键,退出对话框 } }); String info = "您输入的路径:" + path + "是错误的,请重输!"; lab.setText(info);// 设置标签文本内容 d.setVisible(true);// 显示对话框 } } public static void main(String[] args) { // 运行窗体 new MyWindowDemo(); } }
---------- android培训、java培训、期待与您交流! ----------
相关文章推荐
- 黑马程序员——Java基础---GUI(图形用户界面)
- 黑马程序员 Java基础<十一>---> GUI(图形用户界面)
- 黑马程序员----java的GUI图形用户界面及编程基础
- 黑马程序员—20—java基础:有关GUI图形用户界面学习笔记和学习心得体会
- 黑马程序员-Java语言基础– GUI 图形用户界面 第22天
- 黑马程序员-java基础(八)-图形用户界面GUI
- 黑马程序员—java基础—GUI图形用户界面编程
- 黑马程序员—java基础学习--GUI( 图形用户界面 )
- 黑马程序员,Java基础知识九:GUI图形用户界面
- 黑马程序员__JAVA基础__GUI(图形用户界面)
- 黑马程序员—java基础之GUI与前期补充
- 奋斗黑马程序员----Java GUI基础讲解
- Java基础<十七>--->GUI(图形用户界面)
- 黑马程序员_毕向东JAVA基础_GUI
- 黑马程序员---java基础之GUI
- 黑马程序员——Java基础---GUI
- 黑马程序员_java基础-图形用户接口GUI(Graphical User Interface)
- 黑马程序员:Java基础总结----GUI图形化界面
- 黑马程序员-基础-GUI图形用户界面
- 黑马程序员:Java基础总结----GUI&网络&IO综合开发