黑马程序员——Java基础——GUI

第一讲  图形化用户界面

GUI(图形用户界面)
GUI
• Graphical User Interface(图形用户接口)。
• 用图形的方式,来显示计算机操作的界面,这样更方便更直观
CLI
• Command line User Interface (命令行用户接口)
• 就是常见的Dos命令行操作。
• 需要记忆一些常用的命令,操作不直观。

Java为GUI提供的对象都存在java.Awt和javax.Swing两个包中

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

Container常用的子类:Window   Panel

Window常用子类:Frame   Dialog

二、布局管理器

容器中的组件的排放方式,就是布局。
常见的布局管理器:
• FlowLayout(流式布局管理器)从左到右的顺序排列。flow嘛,跟着走就是流水
                •  Panel默认的布局管理器。
• BorderLayout(边界布局管理器)board嘛就是打麻将,所以是东西南北中布局
                •      Frame默认的布局管理器。
• GridLayout(网格布局管理器)Brid网格状的
• CardLayout(卡片布局管理器)
• 选项卡
• GridBagLayout(网格包布局管理器)
• 非规则的矩阵

 1 import java.awt.*;
 2 /*创建步骤:
 3  * 1、用Frame创建窗口
 4  * 2、对窗口进行进本操作
 5  *     大小setSize(),位置setLocation()、布局setLayout
 6  * 3、定义组件(如Button按钮 、Label标签、Checkbox复选框等)
 7  * 4、setVisible(boolean);显示窗口与否
 8  */
 9 public class AwtDemo {
10     public static void main(String[] args){
11         Frame f=new Frame("水音");//创建
12         f.setSize(500,400);//大小
13         f.setLocation(300,200);//位置
14         f.setLayout(new FlowLayout());//边界布局(桌子打麻将不仅)是默认的,这里改成流式跟班布局
15
16         Button b=new Button("有压力");
17         f.add(b);//按钮添加在窗口
18         f.setVisible(true);//显示窗口
19     }
20 }

五、事件监听机制:

1、组合:

  1)事件源(组件):awt或swing包中的图形化界面组件;

  2)事件(Event):每件时间有都有自己特有的对应事件;

  3)监听器:将可触发某一事件的动作,都封装在监听器中

  4)事件处理:引发事件后的处理方式;

2、使用方法

  1)确定事件源(容器或组件)。通过事件源对象的addXXXlistener()方法将监听器注册到该事件源上

如:

f.addWindowListener(new mylis());//主函数引用的方法

//定义一个监听器基础WindowAdapter,并复写7大方法
class mylis extends WindowAdapter {
    public void WindowClosing(){
        System.out.println("关闭按钮被按下");
        System.exit(0);
    }
}

2)然而一般是使用你们匿名内部类方法:

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("开启");
  }
});

练习:面向对象的思想做一次按钮关闭窗口的监听

 1 import java.awt.*;
 2 import java.awt.event.*;
 3
 4 class EvenDemo {
 5 //    定义组件按钮和界面
 6     private Frame f=null;
 7     private Button but=null;
 8 //    构造函数让他一new就执行
 9     EvenDemo(){
10         win();
11     }
12 //    定义窗口
13     public void win(){
14         f=new Frame("我是窗口");
15         but=new Button("我是按钮");
16         f.setBounds(250,250,250,250);//设置大小位置
17         f.setLayout(new FlowLayout());//改成流式布局
18 //        f加入but
19         f.add(but);
20         myEvent();
21         f.setVisible(true);
22     }
23 //    定义时间
24     public void myEvent(){
25 //        窗口时间
26         f.addWindowListener(new WindowAdapter() {
27             public void windowClosing(WindowEvent e){
28                 System.exit(0);
29             }
30         });
31         /*
32          * 那么现在让按钮做时间源的话,选择哪个监听器呢?
33          * 应该在API查阅button的描述,最后找到addActionListener
34          *
35          */
36         but.addActionListener(new ActionListener(){
37
38             public void actionPerformed(ActionEvent arg0) {
39                 System.out.println("按钮搞上你");
40                 System.exit(0);
41             }
42         });
43     }
44     public static void main(String[] args){
45         new EvenDemo();
46     }
47 }

练习大全:鼠标(进入、双击、点击),键盘(点击,组合件),文本框(输入,非法输入)的监听

 1 import java.awt.*;
2 import java.awt.event.*;
3 class MouseEvent {
4 // 定义组件按钮和界面
5 private Frame f=null;
6 private Button but=null;
7 private TextField tf;
8 // 构造函数让他一new就执行
9 MouseEvent(){
10 win();
11 }
12 // 定义窗口
13 public void win(){
14 f=new Frame("我是窗口");
15 but=new Button("我是按钮");
16 f.setBounds(250,250,250,250);//设置大小位置
17 f.setLayout(new FlowLayout());//改成流式布局
18 // f加入but
19 tf=new TextField(20);
20
21 f.add(tf);
22 f.add(but);
23 myEvent();
24 f.setVisible(true);
25 }
26 // 定义时间
27 public void myEvent(){
28 // 窗口时间
29 f.addWindowListener(new WindowAdapter() {//比较多的时候是Adapter
30 public void windowClosing(WindowEvent e){
31 System.exit(0);
32 }
33 });
34 // 按钮监听
35 but.addActionListener(new ActionListener(){
36
37 public void actionPerformed(ActionEvent arg0) {
38 System.out.println("按钮搞上你");
39 // System.exit(0);
40 }
41 });
42 // 文本框注意使用的键盘监听
43 tf.addKeyListener(new KeyAdapter() {
44 public void keyPress(KeyEvent e){
45 int code=e.getKeyCode();
46 if(!(code>=KeyEvent.VK_0&&code<=KeyEvent.VK_9)){
47 System.out.println(code+""+e.getKeyCode());

时间: 2024-10-11 20:14:01

黑马程序员——Java基础——GUI的相关文章

黑马程序员-java基础-GUI

一.GUI 概述: 图形用户界面(Graphics User Interface, GUI) .在Java 操作图形界面的一个类库称为“抽象工具集合(Abstract Window Toolkit , AWT)”.它为Java应用程序提供了基本图形组件. 所有和AWT 编程相关的类都放在 java.awt 包以及它的子包中.AWT 编程中有两个基类:Component 和 MenuComponent . 二.操作图形化界面: 创建图形化界面的一般步骤: 1.创建frame窗体. 2.对窗体进行基

黑马程序员——java基础---GUI、正则表达式

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.GUI概述 GUI(GraphicalUser Interface): 又称图形用户界面,是计算机用户与计算机交互的一种方式. 用户与计算机交互的两种方式: 1.GUI(Graphical User Interface):图形用户接口,用图形方式,来显示计算机操作界面,方便直观. 2.CLI(Command LineUser Interface):命令行用户接口,即常见的Dos命令行操作,

黑马程序员——Java基础---IO(下)

黑马程序员——Java基础---IO(下) ------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------ 一.概述 Java除了基本的字节流.字符流之外,还提供了File类.properties类.打印流.序列流等和输入输出相关的类,它们能够帮助我们更好的处理信息.下面将对它们进行简单的介绍. 一.正

黑马程序员——Java基础---集合框架工具类

黑马程序员——Java基础<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------ 一.概述 Java为操作Set.List和Map提供了一系列工具类,主要有Collections和Arrays.这两个工具类的特点:类中的方法都是静态的,不需要创建对象,直接使用类名调用即可.Collections:是集合对象

黑马程序员——java基础——多线程

 黑马程序员--java基础--多线程 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 进程:是一个正在执行中的程序.每一个进程执行都有一个执行顺序.该顺序是一个执行路径,或者叫一个控制单元. 线程:就是进程中的一个独立的控制单元.线程在控制着进程的执行.一个进程中至少有一个线程. 一个进程至少有一个线程在运行,当一个进程中出现多个线程时,就称这个应用程序是多线程应用程序,每个线程在栈区中都有自己的执行空间,自己的方法区.自己的变量.

黑马程序员——java基础---IO(input output)流字符流

黑马程序员——java基础---IO(input output)流字符流 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- io(input output)流特点: 1,io流用来处理数据之间的传输 2,java对数据的操作是通过流的方式: 3,java用于操作流的对象都在io包中: 4,流按操作数据分为两种:字节流和字符流: 5,流按流向分为:输入流和输出流. 注意:流只能操作数据,而不能操作文件. 3.IO流的常用基类: 1)字节流的抽象

黑马程序员——java基础——反射

 黑马程序员--java基础--反射 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 反射 其实就是动态加载一个指定的类,并获取该类中的所有的内容.而且将字节码文件封装成对象,并将字节码文件中的内容都封装成对象,这样便于操作这些成员. 反射就是把Java类中的各种成分映射成相应的java类. 简单说:反射技术可以对一个类进行解剖. 反射的基石-->Class类 1.java中的类是用来描述一类事物的共性,该类事物有什么属性,没有什么属性

黑马程序员——java基础——内部类

 黑马程序员--java基础--内部类 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 内部类 如果A类需要直接访问B类中的成员,而B类又需要建立A类的对象.这时,为了方便设计和访问,直接将A类定义在B类中.就可以了.A类就称为内部类.内部类可以直接访问外部类中的成员.而外部类想要访问内部类,必须要建立内部类的对象. 内部类的访问规则 1,内部类可以直接访问外部类中的成员,包括私有. 之所以可以直接访问外部类中的成员,是因为内部类中持有

黑马程序员——java基础——集合(Collection)

 黑马程序员--java基础--集合(Collection) ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 集合框架的构成及分类,如下图: 1.为什么出现集合类? 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式. 2.数组和集合类同是容器,有何不同? 数组虽然也可以存储对象,但长度是固定的:集合长度是可变的.数组中可以存储基本数据类型,集合只能存储对象. 3.