Java基础-知识点总结-Java GUI

Java GUI

【GUI图形用户界面】

 

      GUI

 

             Graphical User Interface(图形用户接口)用图形的方式,来显示计算机操作的界面,

 

             这样更方便更直观。

 

             Java为GUI提供的对象都存在java.awt和javax.swing两个包中。

 

      CLI

 

             Command line User Interface (命令行用户接口)就是常见的Dos命令行操作,需要

 

             记忆一些常用的命令,操作不直观。

 

【Awt和Swing】

 

      java.awt:AbstractWindow ToolKit(抽象窗口工具包),需要调用本地系统方法实现

 

      功能,属重量级控件

 

      javax.swing:在Awt的基础上建立的一套图形界面系统,其中提供了更多的组件,

 

      而且完全由Java实现,增强了移植性,属轻量级控件。

 

【继承体系图】

 

 

      Container:容器,一个特殊的组件,该组件中可以通过add方法添加其他组件进来

 

 

【布局管理器】

 

      布局:容器中组件的排放方式。

 

      常见的布局管理器:

 

  1. Flowlayout(流式布局管理器)

    从左到右的顺序排列

    Panel默认的布局管理器

  2. BorderLayout(边界布局管理器)

    东,南,西,北,中

    Frame默认的布局管理器

  3. GridLayout(网格布局管理器)

    规则的矩阵

  4. CardLayout(卡片布局管理器)

    选项卡

  5. GridBagLayout(网格包布局管理器)

    非规则的矩阵

    【Frame窗体】

           Frame是带有标题和边框的顶层窗口。Frame创建时是不可见的,可以通过setVisible

           方法显示,若setVisible(false)则为隐藏窗体;可以通过setSize方法这只窗体大小;通

           过setLocation方法设置窗体显示位置;通过add方法为窗体添加组件…

           例:

 

 

		// 创建一个标题为MyAet的窗体
		Frame f = new Frame("MyAwt");
		// 设置创体的大小
		f.setSize(500, 400);
		// 设置窗体的显示位置
		f.setLocation(300, 200);
		// 设置窗体的布局管理器
		f.setLayout(new FlowLayout());
		// 创建一个按钮
		Button b = new Button("我是一个按钮");
		// 为窗体添加一个按钮
		f.add(b);
		// 将窗体设置为显示
		f.setVisible(true);

 

 

 

【事件监听】

 

      事件监听机制的组成:

 

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

 

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

 

             监听器:将可以触发某一个事件的动作(不止一个动作)都已经封装到了监听器中

 

             事件处理:对产生的动作进行处理

 

             对于前三者,在Java中已有定义,直接获取其对象就可以了,我们要做的事情就

 

             对产生的动作进行处理

 

      监听机制流程图:

 

      【窗口事件】

 

             窗口事件包括打开、关闭、激活或停用、图标化或取消图标化等。处理窗口事件的

 

             类要么实现WindowListener接口(及其包含的所有方法),要么扩展抽象类

 

             WindowAdapter(仅重写所需的方法)。然后使用窗口的addWindowListener方法

 

             将从该类所创建的侦听器对象向该 Window注册。

 

      【Action事件】

 

             动作事件,处理该事件实现ActionListener接口,而使用该类创建的对象可使用组

 

             件的 addActionListener方法向该组件注册。在发生操作事件时,调用该对象的

 

             actionPerformed方法。

 

      【鼠标事件】

 

             鼠标事件包括按下、释放、单击、进入或离开。处理鼠标事件的类要么实现

 

             MouseListener接口(及其包含的所有方法),要么扩展抽象类MouseAdapter(仅

 

             重写所需的方法)。然后使用组件的addMouseListener方法将从该类所创建的侦听

 

             器对象向该组件注册。

 

      【键盘事件】

 

             键盘事件包括按下、释放或键入键。处理键盘事件的类要么实现KeyListener接口

 

             (及其包含的所有方法),要么扩展抽象KeyAdapter类(仅重写有用的方法)。然

 

             后使用组件的addKeyListener方法将从该类所创建的侦听器对象向该组件注册。

 

【菜单】

 

      菜单栏:MenuBar

 

      菜单:MenuMenu对象是从菜单栏部署的下拉式菜单组件。菜单的所有项必须

 

                           属于类MenuItem或其子类之一

 

      菜单项:MenuItemMenuItem对象是菜单的所有项之一

 

      菜单添加方法:

 

  1. 创建菜单栏,菜单,菜单项

  2. 向菜单添加菜单项,或添加菜单作为子菜单

  3. 将菜单添加到菜单栏

  4. 通过setMenuBar()方法,将菜单添加到Frame中

 

【练习】

 

      完成一个简单的记事本程序

 

import java.awt.*;
import java.awt.event.*;
import java.io.*;

public class MyMenuTest {
	private Frame f;// 窗体
	private MenuBar bar;// 菜单栏
	private Menu m;// 菜单
	private MenuItem omi, smi, cmi;// 打开,保存,退出菜单项
	private TextArea ta;// 文本区域
	private FileDialog oDlg, sDlg;// 打开,保存对话框
	private File file;// 要打开或要保存的文件

	public MyMenuTest()// 构造方法
	{
		init();
	}

	public void init()// 窗体初始化
	{
		// 窗体设置
		f = new Frame("MyFrame");
		f.setBounds(300, 200, 500, 400);
		// 创建菜单栏,菜单,菜单项,文本区域,打开对话框,保存对话框
		bar = new MenuBar();
		m = new Menu("文件");
		omi = new MenuItem("打开");
		smi = new MenuItem("保存");
		cmi = new MenuItem("退出");
		ta = new TextArea();
		oDlg = new FileDialog(f, "打开", FileDialog.LOAD);
		sDlg = new FileDialog(f, "打开", FileDialog.SAVE);
		// 为菜单添加菜单项
		m.add(omi);
		m.add(smi);
		m.add(cmi);
		// 为菜单栏天津唉菜单
		bar.add(m);
		// 为窗体设置菜单栏
		f.setMenuBar(bar);
		// 为窗体添加文本区域
		f.add(ta);
		// 添加事件
		myEvent();
		f.setVisible(true);
	}

	public void myEvent() {
		// 为窗体添加监听器
		f.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
		// 为退出菜单项添加监听器
		cmi.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				System.exit(0);
			}
		});
		// 为打开菜单项添加监听器
		omi.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				open();
			}
		});
		// 为保存菜单项添加监听器
		smi.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				save();
			}
		});
	}

	// 定义方法,保存文件
	private void save() {
		// 如果文件不存在,则弹出保存对话框
		if (file == null) {
			sDlg.setVisible(true);
			String dir = sDlg.getDirectory();
			String name = sDlg.getFile();
			if (dir == null || name == null)
				return;
			file = new File(dir, name);
		}
		// 创建输出流对象,将文本区域的数据写入到文件
		BufferedWriter bufw = null;
		try {
			bufw = new BufferedWriter(new FileWriter(file));
			String info = ta.getText();
			bufw.write(info);
			bufw.flush();
		} catch (IOException e) {
			throw new RuntimeException("保存失败!");
		} finally {
			try {
				if (bufw != null)
					bufw.close();
			} catch (IOException e) {
				System.out.println("关闭流失败");
			}
		}
	}

	// 定义方法,打开文件
	private void open() {
		oDlg.setVisible(true);
		String dir = oDlg.getDirectory();
		String name = oDlg.getFile();
		if (dir == null || name == null)
			return;
		System.out.println(dir + "\t" + name);
		file = new File(dir, name);
		ta.setText("");
		BufferedReader bufr = null;
		try {
			bufr = new BufferedReader(new FileReader(file));
			String line = null;
			while ((line = bufr.readLine()) != null) {
				System.out.println(line);
				ta.append(line + "\t\n");
			}
		} catch (IOException ex) {
			throw new RuntimeException("打开文件失败!");
		} finally {
			try {
				if (bufr != null)
					bufr.close();
			} catch (IOException ex) {
				System.out.println("输入流关闭失败!");
			}
		}
	}

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

 



  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值