简介Java的GUI

本文介绍了 Java 中 GUI 图形用户界面的基础知识,包括 AWT 和 Swing 的使用,以及如何创建基本窗口并添加菜单和文本区域等组件。还演示了事件监听器的应用,例如窗口关闭和菜单项点击事件。

GUI

GUI图形用户界面:用图形的方式,来显示计算机操作的界面

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

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

常见的布局管理器:
  • FlowLayout(流式布局管理器):从左到右的顺序排列。Panel默认的布局管理器。
  • BorderLayout(边界布局管理器)东,南,西,北,中。  Frame默认的布局管理器。
  • GridLayout(网格布局管理器)规则的矩阵
  • CardLayout(卡片布局管理器)选项卡
  • GridBagLayout(网格包布局管理器)非规则的矩阵
如何建立一个简单的窗体?

public static void main(String[] args) {
	Frame  f = new Frame("my window");
	f.setLayout(new FlowLayout());//设置布局方式
	f.setSize(500,400);//设置窗体大小,500为横向长度,400为纵向长度
	f.setLocation(300,200);//设置窗体出现在屏幕的位置,300为离屏幕左边横坐标距离,200为纵向
	f.setVisible(true);//设置窗体显示
	}


这样,一个简单的窗体就创建了,但是我们发现,这就仅仅是一个空白的窗体界面,连关闭按钮都没有实现,只能是强行的停止Java虚拟机了。

那么如何的给窗体添加点个性呢?

事件监听机制的组成:

  • 事件源(组件)
  • 事件(Event)
  • 监听器(Listener)
  • 事件处理(引发事件后处理方式)

    原理图:

事件监听机制的特点:
 1,事件源。
 2,事件
 3,监听器
 4,事件处理。
 事件源:就是awt包或者swing包中的那些图形界面组件。
 事件:每一个事件源都有自己特有的对应事件和共性事件。
 监听器:可以触发某一个事件的动作(不止一个动作)都已经封装到了监听器中
如,往上序代码加上些监听器

<span style="font-size:14px;">class Tests extends Frame{
	/**
	 * 窗体标识ID
	 */
	private static final long serialVersionUID = 13L;
	
	TextArea content = null;
	File f = null;//文件关联
	FileDialog openDia = new FileDialog(this,"打开文件",FileDialog.LOAD);//文件窗口
	FileDialog saveDia = new FileDialog(this,"保存文件",FileDialog.SAVE);
	
	public void initial(){
		this.setSize(680, 512);//设置窗体大小
		this.setLayout(getLayout());//设置布局方式
		this.setLocation(310,130);//设置窗体出现在屏幕的位置
		
		// 添加指定的窗口侦听器,以从此窗口接收窗口事件。
		this.addWindowListener(new WindowAdapter() {
			//关闭窗口
			public void windowClosing(WindowEvent e){
				System.exit(0);
			}
		});
		
		content = new TextArea();//创建一个文本区域
		this.add(content);
		
		//我想,我么可以添加一个菜单条
		MenuBar mb = new MenuBar();
		this.setMenuBar(mb);
		//再创建一个菜单
		Menu file = new Menu("文件");
		mb.add(file);
		//添加一个菜单项
		MenuItem open = new MenuItem("打开");
		file.add(open);
		//再添加一个菜单项
		MenuItem save = new MenuItem("保存");
		file.add(save);
		//再添加一个菜单项
		MenuItem newSave = new MenuItem("另存为");
		file.add(newSave);
		//当然还可以有一个子菜单吧
		Menu help = new Menu("帮助");
		file.add(help);
		//在子菜单中再添加一个菜单项
		MenuItem about = new MenuItem("关于");
		help.add(about);
		
		//给菜单项添加指定的窗口侦听器
		open.addActionListener(new ActionListener() {
			@Override
			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;	
				content.setText("");
				f = new File(dirPath, fileName);
				try {
					BufferedReader bufr = new BufferedReader(new FileReader(f));
					String line = null;
					while((line = bufr.readLine())!=null){
						content.append(line+"\r\n");//将文件读取到文本区域中 去
					}
					bufr.close();
				} catch (Exception e2) {
					throw new RuntimeException("读取失败");
				}
			}
		});
		
		save.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				//如果文件关联为null,则弹出窗口,要求选择路径
				writeSave(f==null);
			}
		});
		
		newSave.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				writeSave(true);
			}
		});
		
		this.setVisible(true);
	}

	public void writeSave(boolean b){
		if(b){
			saveDia.setVisible(true);
			String dirPath = saveDia.getDirectory();
			String fileName = saveDia.getFile();
			if(dirPath==null || fileName == null)
				return;	
			f = new File(dirPath, fileName);
		}
		try {
			BufferedWriter bufw = new BufferedWriter(new FileWriter(f));
			String text =content.getText();
			bufw.write(text);//将数据写入文件
			bufw.close();
		} catch (Exception e2) {
			throw new RuntimeException();
		}
	}
	
	public static void main(String[] args) {
		new Tests().initial();
	}
}</span>


小玩意一枚!





图书资料管理信息系统,带源代码、数据库sql文件、课设报告,具备如下基本功能: 1、 系统管理功能有:角色管理、用户管理、修改密码。主要实现系统的安全管理,不同的操作者有不同的权限,可以执行不同的操作。普通读者的权限只能是查询图书及自己的借阅情况;而图书馆管理员可以对图书信息进行管理,如对新书入库,也可以管理用户,如添加新用户和删除不用的账号等。 2、 进书管理功能有:登记基本的图书信息。这部分的功能用于登记新书的书名、作者、出版社、价格、进书的册数、进书日期、ISBN等。 3、 图书入库管理功能有:对新书分类编目,及时更新图书库中的图书信息。这部分的功能用于对所购进的新书,按其种类学科进行编目,给与唯一的书号;及时更新书库中的图书信息,包括书名、书号、作者、出版社、价格、库存位置和库存册数这些信息,方便读者查询借阅。 4、 查询功能功能有:查询图书的信息,查询读者的借阅情况。这部分的功能主要提供多种方式的查询服务。读者可以根据书名、作者或关键字模糊查询图书信息;读者也可以根据自己的借书证号查询自己的借阅情况,如已借了几本书,借书日期,还书日期,有没有续借等。 5、 借书/还书管理功能有:借书管理、还书管理。这部分的功能是当读者借书时,系统根据借书证号识别读者身份,核对读者的借书信息,做出判断如可不可以借、还可借几本,成功借阅后记录在借书信息并修改书库图书信息。当读者还书时,系统根据借书证号识别读者身份,核对读者的借书信息,做出判断如有没有超期,要不要罚款,需要罚多少等,最后还书成功,修改书库图书信息。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值