JAVA基础-GUI
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的资料请关注其它相关文章!
下一篇: 再见!MSN:中国10月31日关闭