当前位置: 移动技术网 > IT编程>开发语言>Java > JAVA基础-GUI

JAVA基础-GUI

2020年06月23日  | 移动技术网IT编程  | 我要评论

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实现。增强了移植性,属

轻量级控件

继承关系图

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):将可以触发某一个事件的动作(不只一个动作)都已经封装到了监听器中

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

事件监听机制流程图

事件监听机制

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中

菜单继承体系

代码示例

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的资料请关注移动技术网其它相关文章!

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网