欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JAVA基础-GUI

程序员文章站 2023-08-26 23:07:36
java也提供图像化编程图形化gui(图形用户界面)gui1 graphical user interface(图形用户接口)2 用图形的方式,来显示计算机操作的界面,这样更方便更直观cli1 com...

java也提供图像化编程

图形化

gui(图形用户界面)

gui

1  graphical user interface(图形用户接口)

2  用图形的方式,来显示计算机操作的界面,这样更方便更直观

cli

1  command line user interface (命令行用户接口)

2  就是常见的dos命令行操作

3  需要记忆一些常用的命令,操作不直观

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

awt和swing

java.awt:abstract window toolkit(抽象窗口 工具包),需要调用本地系统方法实现功能。属重量级控件

javax.swing:在awt的基础上,建立的一套图形界面系统,其中提供了更多的组件,而且完全由java实现。增强了移植性,属

轻量级控件

继承关系图

JAVA基础-GUI

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

布局管理器

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

常见的布局管理器:

flowlayout(流式布局管理器)
从左到右的顺序排列
panel默认的布局管理器

borderlayout(边界布局管理器)
东,南,西,北,中
frame默认的布局管理器

gridlayout(网格布局管理器)
规则的矩阵

cardlayout(卡片布局管理器)
选项卡

gridbaglayout(网格包布局管理器)
非规则的矩阵

建立一个简单的窗体

container常用子类:window panel(面板,不能单独存在)

window常用子类:frame dialog

简单的窗体创建过程:

frame f = new frame("my window");
f.setlayout(new flowlayout());
f.setsize(500,400);//设置窗体大小
f.setlocation(300,200);//设置窗体出现在屏幕的位置
f.setvisible(true); //设置窗口可见性

事件监听

事件监听机制组成

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

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

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

事件处理(引发事件后处理方式)

事件监听机制流程图

JAVA基础-GUI

事件监听机制

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

2  通过事件源对象的addxxxlistener()方法将侦听器注册到该事件源上

3  该方法中接收xxxlistener的子类对象,或者xxxlistener的子类xxxadapter的子类对象

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

5  在覆盖方法的时候,方法的参数一般是xxxevent类型的变量接收

6  事件触发后会把事件打包成对象传递给该变量(其中包括事件源对象。通过getsource()或者getcomponent()获取)

import java.awt.*;
import java.awt.event.*;
import java.io.*;
class test {
	private frame f;
	private textfield tf;
	private button but;
	private textarea ta;

	private dialog d;
	private label lab;
	private button okbut;

	test() {
		init();
	}

	public void init() {
		f = new frame("my window");
		f.setbounds(300,100,600,500);
		f.setlayout(new flowlayout());
		tf = new textfield(60);
		but = new button("转到");
		ta = new textarea(25,70);
		d = new dialog(f,"提示信息-self",true);
		d.setbounds(400,200,240,150);
		d.setlayout(new flowlayout());
		lab = new label();
		okbut = new button("确定");
		d.add(lab);
		d.add(okbut);
		f.add(tf);
		f.add(but);
		f.add(ta);
		myevent();
		f.setvisible(true);
	}

	private void myevent() {
		okbut.addactionlistener(new actionlistener() {
			public void actionperformed(actionevent e) {
				d.setvisible(false);
			}
		});
		d.addwindowlistener(new windowadapter() {
			public void windowclosing(windowevent e) {
				d.setvisible(false);
			}
		});
		tf.addkeylistener(new keyadapter() {
			public void keypressed(keyevent e) {
				if(e.getkeycode()==keyevent.vk_enter)
					showdir();
			}
		});
		but.addactionlistener(new actionlistener() {
			public void actionperformed(actionevent e) {
				showdir();
			}
		});
		f.addwindowlistener(new windowadapter() {
			public void windowclosing(windowevent e) {
				system.exit(0);	
			}
		});
	}
	private void showdir() {
		string dirpath = tf.gettext();		
		file dir = new file(dirpath);
		if(dir.exists() && dir.isdirectory()) {
			ta.settext("");
			string[] names = dir.list();
			for(string name : names) {
				ta.append(name+"\r\n");
			}
		} else {
			string info = "输入信息错误,请重输";
			lab.settext(info);
			d.setvisible(true);
		}
	}
	public static void main(string[] args) {
		new test();
	}
}

菜单

概述

menubar,menu,menuitem
先创建菜单条,再创建菜单,每一个菜单 中建立菜单项
也可以菜单添加到菜单中,作为子菜单
通过setmenubar()方法,将菜单添加到frame中

菜单继承体系

JAVA基础-GUI

代码示例

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

class test {

	private frame f;
	private menubar mb;
	private menu m,submenu;
	private menuitem closeitem,subitem;

	test(){
		init();
	}
	
  public void init(){
		f = new frame("my window");
		f.setbounds(300,100,500,600);
		f.setlayout(new flowlayout());
		mb = new menubar();
		m = new menu("文件");
		submenu = new menu("子菜单");
		subitem = new menuitem("子条目");
		closeitem = new menuitem("退出");
		submenu.add(subitem);
		m.add(submenu);
		m.add(closeitem);
		mb.add(m);
		f.setmenubar(mb);
		myevent();
		f.setvisible(true);
	}
	private void myevent() {
		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 test();
	}
}

可执行jar包

1  将多个类封装到了一个包(package)中。

2  定义一个jar包的配置信息。

3  定义一个文件a.txt,文件内容内容为:main-class:(空格)包名.类名(回车)

4  打jar包。
jar -cvfm my.jar a.txt 包名

5  通过winrar程序进行验证,查看该jar的配置文件中是否有自定义的配置信息

6  通过工具–文件夹选项–文件类型–jar类型文件,通过高级,定义该jar类型文件的打开动作的关联程序
jdk\bin\javaw.exe -jar

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

public class test {
	private frame f;
	private menubar bar;
	private textarea ta;
	private menu filemenu;
	private menuitem openitem,saveitem,closeitem;
	private filedialog opendia,savedia;
	private file file;
	test() {
		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();
				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 test();
	}
}

以上就是java基础-gui的详细内容,更多关于java gui的资料请关注其它相关文章!

相关标签: JAVA GUI