黑马程序员------Java中GUI(图形用户界面)学习总结

Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流!

GUI:

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

  即用图形的方式,来显示计算机操作的界面,以方便用户更容易更直观地操作。

  Java中为GUI提供的对象都在Java.Awt和Javax.Swing两个包中。

  java.Awt:

      Abstract Window ToolKit (抽象窗口工具包)。

      需要调用本地系统方法实现功能,属于重量级控件。

  javax.Swing:

      在AWT的基础上,建立的一套图形界面系统

      其中提供了更多的组件,而且完全由Java实现。增强了移植性,属轻量级控件。

java.awt中的继承关系:

  

  其中Container是一个特殊的组件,为一个容器,可以添加其他组件进来。

布局管理器:

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

    常见的布局管理器:

      ·FlowLayout(流式布局管理器)

        ·从做到右顺序排列

        ·Panel中的默认布局管理器

      ·BorderLayout(边界布局管理器)

        ·东,西,南,北,中

        ·Frame默认的布局管理器

      ·GridLayout(网格布局管理器)

        ·规则的矩阵

      ·CardLayout(卡片布局管理器)

        ·选项卡

      ·GridBagLayout(网格包布局管理器)

        ·非规则的矩阵

建立一个简单的窗体

  Container的常用子类:Window, Panel(面板,不能单独存在)

  Window的常用子类:Frame,Dialog

创建一个简单的窗体:

/*创建图形化界面:1.创建frame窗体。2.对窗体进行基本设置。比如大小,位置,布局。3.定义组件。4.将组件通过窗体的add方法添加到窗体中。5.让窗体显示。*/class  AwtDemo
{
    public static void main(String[] args)
    {
        Frame f = new Frame("my awt");
        f.setSize(500,400);
        f.setLocation(300,200);
        f.setLayout(new FlowLayout());

      Button b = new Button("我是一个按钮");
      f.add(b);

        f.setVisible(true);
    }
}

时间监听机制组成

  1、事件源(组件)

  2、事件(Event)

  3、监听器(LIistener)

  4、事件处理(引发事件后的处理方式)

事件监听机制流程图:

  事件源:就是awt包或者swing包中的那些图形界面组件。

  事件:每一个事件源都有自己特有的对应事件和共性事件。

  监听器:将可以触发某一个事件的动作(不只一个动作)都已经封装到了监听器中。以上三者,在java中都已经定义好了。直接获取其对象来用就可以了。

  我们要做的事情是,就是对产生的动作进行处理。

代码示例:

  //让按钮具备退出程序的功能
       /*
        按钮就是事件源。
        那么选择哪个监听器呢?
        通过关闭窗体示例了解到,想要知道哪个组件具备什么样的特有监听器。
        需要查看该组件对象的功能。
         通过查阅button的描述。发现按钮支持一个特有监听addActionListener。
      */

class  FrameDemo{    

  //定义该图形中所需的组件的引用。
    private Frame f;
    private Button but;

    FrameDemo()
    {
        init();
    }

    public void init()
    {
        f = new Frame("my frame");

        //对frame进行基本设置。
        f.setBounds(300,100,600,500);
        f.setLayout(new FlowLayout());
        but = new Button("my button");
        //将组件添加到frame中
        f.add(but);
        //加载一下窗体上事件。
        myEvent();
        //显示窗体;
        f.setVisible(true);

    }
    private void myEvent()
    {
        f.addWindowListener(new WindowAdapter()
        {
            public void windowClosing(WindowEvent e)
            {
                System.exit(0);
            }
        });

        but.addActionListener(new ActionListener()
        {
            private int count = 1;
            public void actionPerformed(ActionEvent e)
            {
                System.exit(0);
            }
        });
    }

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

菜单

 菜单的继承关系:

   

  菜单的创建过程:

  1、先创建菜单条,再创建菜单,每个菜单中再建立菜单项。

  2、可以将菜单添加到菜单中,作为菜单的子菜单。

  3、通过setMenuBar()方法,将菜单条添加到Frame中。

一个简单的记事本程序代码:

package mymenu;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class MyMenuTest
{
    private Frame f;
    private MenuBar bar;
    private TextArea ta;
    private Menu fileMenu;
    private MenuItem openItem,saveItem,closeItem;

    private FileDialog openDia,saveDia;

    private File file;
    MyMenuTest()
    {
        init();
    }

  //窗体的初始化方法
    public void init()
    {
        f = new Frame("my window");
        f.setBounds(300,100,650,600);
        bar = new MenuBar();
        ta = new TextArea();
        fileMenu = new Menu("文件");
        openItem = new MenuItem("打开");
        saveItem = new MenuItem("保存");
        closeItem = new MenuItem("退出");

        fileMenu.add(openItem);
        fileMenu.add(saveItem);
        fileMenu.add(closeItem);
        bar.add(fileMenu);

        f.setMenuBar(bar);

        openDia = new FileDialog(f,"我要打开",FileDialog.LOAD);
        saveDia = new FileDialog(f,"我要保存",FileDialog.SAVE);

        f.add(ta);
        myEvent();

        f.setVisible(true);
    }

  //事件监听处理方法
    private void myEvent()
    {    //保存按钮事件监听处理
        saveItem.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                if(file==null)
                {
                    saveDia.setVisible(true);
                    String dirPath = saveDia.getDirectory();
                    String fileName = saveDia.getFile();
                    if(dirPath==null || fileName==null)
                        return ;
                    file = new File(dirPath,fileName);
                }
                try
                {
                    BufferedWriter bufw  = new BufferedWriter(new FileWriter(file));
                    String text = ta.getText();
                    bufw.write(text);
                    //bufw.flush();
                    bufw.close();
                }
                catch (IOException ex)
                {
                    throw new RuntimeException();
                }
            }
        });
    //打开按钮事件监听处理
        openItem.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                openDia.setVisible(true);
                String dirPath = openDia.getDirectory();
                String fileName = openDia.getFile();
//                System.out.println(dirPath+"..."+fileName);
                if(dirPath==null || fileName==null)
                    return ;
                ta.setText("");
                file = new File(dirPath,fileName);
                try
                {
                    BufferedReader bufr = new BufferedReader(new FileReader(file));
                    String line = null;
                    while((line=bufr.readLine())!=null)
                    {
                        ta.append(line+"\r\n");
                    }
                    bufr.close();
                }
                catch (IOException ex)
                {
                    throw new RuntimeException("读取失败");
                }
            }
        });    //推出按钮的监听处理
        closeItem.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                System.exit(0);
            }
        });    //窗体本身监听处理
        f.addWindowListener(new WindowAdapter()
        {
            public void windowClosing(WindowEvent e)
            {
                System.exit(0);
            }
        });
    }
    public static void main(String[] args)
    {
        new MyMenuTest();
    }
}

总结:

  事件监听机制:

    1、确定事件源(容器或组件)

    2、通过事件源对象的addxxxListener()方法将监听器注册到该事件源上。

    3、该方法中接收XXXListener对象,或者XXXListener的子类XXXAdapter对象。

    4、一般用匿名内部类来表示。

    5、再覆盖方法的时候,方法的参数一般是XXXEvent类型的变量接收。

    6、一般XXXListener方法超过3个或者3个就一定会有一个XXXAdapter子类对象。(也称为适配器)

时间: 2024-10-24 13:25:55

黑马程序员------Java中GUI(图形用户界面)学习总结的相关文章

黑马程序员——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 Too

黑马程序员-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中的反射总结

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- Java 反射总结 类装载器工作机制 类装载器就是寻找类的节码文件并构造出类在JVM 内部表示对象的组件.在Java 中, 类装载器把一个类装入JVM 中,要经过以下步骤: 1.装载:查找和导入Class 文件: 通过一个类的全限定名来获

黑马程序员------Java中多线程学习总结(一)

Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! 一.多线程的概念 进程:是一种“自包容”的运行程序,有自己的地址空间. 基于进程的特点是允许计算机同时运行两个或更多的程序 线程:是进程内部单一的一个顺序控制流 . 基于线程的多任务处理环境中,线程是最小的处理单位. 在Java中,一个应用程序可以包含多个线程.每个线程执行特定的任务,并可与其他线程并发执行.多线程使系统的空转时间减少,提高了CPU的利用率.多线程编程隐藏了CPU在任务之间切换的事实. 二.创建

黑马程序员------Java中jdk1.5新特性

Java培训.Android培训.iOS培训..Net培训.期待与您交流! JDK1.5新特性: 为什么会出现新特性: 新的技术出现是为了解决老的问题,Java语言为了提高开发者的开发效率,对之前的某些不利于提高效率的技术进行改进. 静态导入: 静态导入:可以导入某个类下的静态方法,静态导入后,可以不写类名而直接使用此类下的静态方法. 语法:import static 包名.类名.静态方法 代码示例: package com.itheima.day1; /** * 静态导入 * @author

黑马程序员————java中的网络编程

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- java中的网络编程 一.网络编程概述:基于互联网的编程 就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换. 二.网络模型:OSI和TCP/IP 1.OSI(Open System Interconnection开放系统互连

黑马程序员-Java中的基本数据类型

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- Java中的数据类型分为两个大类:基本数据类型和引用数据类型. 其中基本数据类型又可以分为四类:整型数据类型,小数数据类型,字符类型,布尔型. 整型数据类型还分为:byte,short,int(整型),long(长整型).默认为int型.

黑马程序员————java中的抽象类

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 抽象类集中的体现了java面向对象的特性,对于每一种事物通过五个方面:属性,方法,构造器,代码块,内部类,来重新解构再进行组装,然后将类似的事物归为一类,这是面向对象的思想.java中常说万物皆对象,那么很显然我们可以进一步的将其中的方法