版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、5 java 图形用户界面设计5.1实验目的、内容及性质掌握 java 的 gui 设计技术,掌握 awt 和 swing 的应用技巧。实验性质:验证、必做实验学时:2学时5.2问题及思考1、 最常见的awt以及swing控件用法。2、 几个常见布局总结3、 区分容器控件和一般非容器控件4、 java事件几种关键组成部分以及事件处理流程5.3实验指导1、 swing示例/*需要哪些组件,如何布局?*/ import java.awt.*; import java.awt.event.*; import javax.swing.*; public class myfrm extends jfra
2、me/从jframe继承 /*声明界面需要使用的控件*/ jlabel lbl_name =new jlabel(用户名); jlabel lbl_pwd =new jlabel(密码); jtextfield txt_name=new jtextfield(); jpasswordfield txt_pwd=new jpasswordfield(); jbutton btn_ok=new jbutton(登陆); jbutton btn_cancel=new jbutton(取消); /*在构造函数中将控件放置在jframe上*/ public myfrm() /*获取当前frame的内容面
3、板*/ jpanel jp=(jpanel)this.getcontentpane(); /*设置内容面板的布局 layout*/ jp.setlayout(new gridlayout(3,2); jp.add(lbl_name);jp.add(txt_name); jp.add(lbl_pwd);jp.add(txt_pwd); jp.add(btn_ok);jp.add(btn_cancel); this.setdefaultcloseoperation(jframe.exit_on_close); public static void main(string arg) /*纯java样
4、式显示窗体*/ jframe.setdefaultlookandfeeldecorated(true); /*实例化当前窗体类*/ myfrm frm=new myfrm(); frm.setsize(200,200); frm.setvisible(true); 2、常用布局1)、流布局:flowlayout 从左到右,自上而下方式在容器中排列,控件的大小不会随容器大小变化. 容器.setlayout(new flowlayout(flowlayout.left);2)、网格布局:gridlayout 按照指定行数与列数,将容器分成大小相等的单元格每个单元格放置一个控件. 不能将控件放在指定
5、单元格 容器.setlayout(new gridlayout(3,4,10,15);3)、边界布局:borderlayout 将容器分成东、西、南、北、中五个部分 容器.setlayout(new borderlayout();窗口的内容面板默认布局就是边界布局。容器.add(控件,borderlayout.north); 4)、混合布局:使用jpanel,将多个布局组合在一起使用 jpanel jp=(jpanel)this.getcontentpane();for(int i=0;ibtn.length;i+)btni=new jbutton(btn+i);jpanel jp1=new
6、jpanel();/默认布局为flowlayoutjp1.setlayout(new gridlayout(2,2);for(int i=0;i4;i+) jp1.add(btni);jpanel jp2=new jpanel();/默认布局为flowlayout for(int i=0;i4;i+) jp2.add(btni+4);5)、绝对布局 null:以坐标定位 容器.setlayout(null); 每个控件在放置在容器之前,必须设置其边界 setbounds(x,y,width,height);btn.setbounds(10,100,30,60);3、swing示例grid布局i
7、mport java.awt.*;import java.awt.event.*;import javax.swing.*;public class gridlayoutdemo extends jframe private jbutton buttons; private string names = one, two, three, four, five, six ; public gridlayoutdemo() super( gridlayout demo ); jpanel container =(jpanel)this.getcontentpane(); container.set
8、layout(new gridlayout( 3, 2 ); / create and add buttons buttons = new jbutton names.length ; for ( int count = 0; count 事件源侦听者接收事件-自动调用相应事件处理函数. 编程模板: class myfrm extends jframe implements actionlistener jbutton btn=new jbutton(ok); . public myfrm() . btn.addactionlistner(this); . public void action
9、performed(actionevent e) . if(e.getsource()=btn) java事件处理示例:import javax.swing.*;import java.awt.*;import java.awt.event.*;public class myfrm extends jframe implements actionlistener/* 界面中需要的组件作为属性声明 */jtextfield txt = new jtextfield(10);jlabel lbl = new jlabel(姓名);jbutton btn = new jbutton(查询);/* 组
10、件在构造函数中放置在窗体jframe上 */public myfrm() /* 获取jframe的内容面板contentpane,控件放在该面板上 */jpanel jp = (jpanel) this.getcontentpane();/* 设置面板布局layout,如何放? */jp.setlayout(new flowlayout();jp.add(lbl);jp.add(txt);jp.add(btn);/* 为事件源加一个侦听者*/btn.addactionlistener(this);this.setdefaultcloseoperation(jframe.exit_on_clos
11、e); /* 事件处理方法*/ public void actionperformed(actionevent e) joptionpane.showmessagedialog(this, btn点击); public static void main(string arg) jframe.setdefaultlookandfeeldecorated(true);/ 设置纯java样式myfrm frm = new myfrm();frm.setsize(400, 300);frm.setvisible(true);注意:在做下列题目前仔细阅读第一个示例,彻底弄懂swing界面设计5.4实践编
12、程1、调试运行swing示例2、调试运行java事件处理示例3、 依据题1、2,编写如下界面当用户点击”click me”按钮,显示消息对话框,消息为” click me 按钮被点击”。package ex5_3;import javax.swing.*;import java.awt.*;import java.awt.event.*;public class myfrm extends jframe implements actionlistenerjbutton btn=new jbutton(click me);public myfrm()jpanel jp=(jpanel)this.
13、getcontentpane();jp.setlayout(new flowlayout();jp.add(btn);btn.addactionlistener(this);this.settitle(action event);this.setdefaultcloseoperation(jframe.exit_on_close);public void actionperformed(actionevent e)joptionpane.showmessagedialog(this,click me 按钮被点击);package ex5_3;import javax.swing.*;impor
14、t java.awt.*;import java.awt.event.*;public class test public static void main(string args) myfrm frm = new myfrm();frm.setsize(400, 300);frm.setvisible(true);4、编写一个程序实现用户登录界面 当用户登录按下确定键,判断用户是否录入了用户名与密码,如果没有按或用户名不为admin 密码不为 1234 都需要提示错误。package ex5_4;import javax.swing.*;import java.awt.*;import ja
15、va.awt.event.*;public class myfrm extends jframe implements actionlistener jlabel lbl_name =new jlabel(用户名); jlabel lbl_pwd =new jlabel(密码); jtextfield txt_name=new jtextfield(); jpasswordfield txt_pwd=new jpasswordfield(); jbutton btn_ok=new jbutton(登陆); jbutton btn_cancel=new jbutton(取消); public m
16、yfrm() jpanel jp=(jpanel)this.getcontentpane(); jp.setlayout(new gridlayout(3,2,10,5); jp.add(lbl_name);jp.add(txt_name); jp.add(lbl_pwd);jp.add(txt_pwd); jp.add(btn_ok);jp.add(btn_cancel); this.settitle(登陆); this.setdefaultcloseoperation(jframe.exit_on_close); btn_ok.addactionlistener(this); public
17、 void actionperformed(actionevent e) string uname=txt_name.gettext(); string upwd=txt_pwd.gettext(); if(uname.equals()|upwd.equals() joptionpane.showmessagedialog(this, 用户名或密码未输入!); else if(!uname.equals(admin)|!upwd.equals(1234) joptionpane.showmessagedialog(this, 用户名或密码输入错误!); else joptionpane.sho
18、wmessagedialog(this, 用户名或密码输入正确!); package ex5_4;import javax.swing.*;import java.awt.*;import java.awt.event.*;public class test public static void main(string args) jframe.setdefaultlookandfeeldecorated(true);myfrm frm=new myfrm();frm.setsize(400,200);frm.setvisible(true);5、利用合适的布局和swing控件完成下题按照界面
19、使用相应控件与合适的布局完成下题,要求按生成随机数按纽产生三个随机整数0到100之间,按计算平均数按纽计算平均值,如图所示,初始界面参考:int x=(math.random()*41+60); 产生随机数txt1.settext(x+”);将随机数赋予文本框txt1package ex5_5;import javax.swing.*;import java.awt.*;import java.awt.event.*;public class myfrm extends jframe implements actionlistener jlabel lbl =new jlabel(随机数字一)
20、; jlabel lb2 =new jlabel(随机数字二); jlabel lb3 =new jlabel(随机数字三); jlabel lb4 =new jlabel(三数平均值); jtextfield txt1=new jtextfield(); jtextfield txt2=new jtextfield(); jtextfield txt3=new jtextfield(); jtextfield txt4=new jtextfield(); jbutton btn_start=new jbutton(生成随机数); jbutton btn_average=new jbutton
21、(计算平均数); public myfrm() jpanel jp=(jpanel)this.getcontentpane(); jp.setlayout(new gridlayout(5,2,10,5); jp.add(lbl);jp.add(txt1); jp.add(lb2);jp.add(txt2); jp.add(lb3);jp.add(txt3); jp.add(lb4);jp.add(txt4); jp.add(btn_start);jp.add(btn_average); this.settitle(三个随机数字); this.setdefaultcloseoperation(
22、jframe.exit_on_close); btn_start.addactionlistener(this); btn_average.addactionlistener(this); public void actionperformed(actionevent e) if(e.getsource()=btn_start) int x=(int)(math.random()*41+60); txt1.settext(x+); int y=(int)(math.random()*41+60); txt2.settext(y+); int z=(int)(math.random()*41+6
23、0); txt3.settext(z+); if(e.getsource()=btn_average) double x=double.valueof(txt1.gettext(); double y=double.valueof(txt2.gettext(); double z=double.valueof(txt3.gettext(); double t=(x+y+z)/3; txt4.settext(t+); package ex5_5;import javax.swing.*;import java.awt.*;import java.awt.event.*;public class
24、test public static void main(string args) myfrm frm=new myfrm();frm.setsize(400,200);frm.setvisible(true);6编写程序实现如下界面,实现事件如果按下座位i 就在控制台中显示“座位i被选中” 例如按下 “座位0“,则输出座位0被选中”package ex5_6;import javax.swing.*;import java.awt.*;import java.awt.event.*;public class myfrm extends jframe implements actionlist
25、ener jbutton btn0=new jbutton(讲台); jbutton btn1=new jbutton(座位1); jbutton btn2=new jbutton(座位2); jbutton btn3=new jbutton(座位3); jbutton btn4=new jbutton(座位4); jbutton btn5=new jbutton(座位5); jbutton btn6=new jbutton(座位6); public myfrm() jpanel jp=(jpanel)this.getcontentpane(); jpanel jp1=new jpanel()
26、; jp1.setlayout(new gridlayout(); jp1.add(btn0); jp.add(jp1,borderlayout.north); jpanel jp2=new jpanel(); jp2.setlayout(new gridlayout(2,3); jp2.add(btn1);jp2.add(btn2);jp2.add(btn3); jp2.add(btn4);jp2.add(btn5);jp2.add(btn6); jp.add(jp2,borderlayout.center); this.setdefaultcloseoperation(jframe.exi
27、t_on_close); btn1.addactionlistener(this); btn2.addactionlistener(this); btn3.addactionlistener(this); btn4.addactionlistener(this); btn5.addactionlistener(this); btn6.addactionlistener(this); public void actionperformed(actionevent e) if(e.getsource()=btn1) system.out.println(座位1被选中); if(e.getsourc
28、e()=btn2) system.out.println(座位2被选中); if(e.getsource()=btn3) system.out.println(座位3被选中); if(e.getsource()=btn4) system.out.println(座位4被选中); if(e.getsource()=btn5) system.out.println(座位5被选中); if(e.getsource()=btn6) system.out.println(座位6被选中); public static void main(string args) myfrm frm=new myfrm()
29、;frm.setsize(1000,500);frm.setvisible(true);7 完成以下窗体制作参考:这一题考虑使用组合布局,将上面控件放置在 jpanel上,再将jpanel放到内容面板的中间。下面四个按钮先放在某jpanel再放置在内容面板的 south部分package ex5_7;import javax.swing.*;import java.awt.*;import java.awt.event.*;public class loginfrm extends jframe implements actionlistener jlabel lb_name=new jlab
30、el(姓名:);jlabel lb_sex=new jlabel(性别:);jlabel lb_profession=new jlabel(身份:);jlabel lb_unit=new jlabel(单位:);jlabel lb_idnum=new jlabel(证件号码:);jlabel lb_rdate=new jlabel(注册日期:);jlabel lb_edate=new jlabel(有效日期:);jtextfield txt_name=new jtextfield();jcombobox cmb_sex=new jcombobox();jcombobox cmb_profess
31、ion=new jcombobox();jcombobox cmb_unit=new jcombobox();jtextfield txt_idnum=new jtextfield();jtextfield txt_rdate=new jtextfield();jtextfield txt_edate=new jtextfield();jbutton btn_add=new jbutton(添加);jbutton btn_del=new jbutton(删除);jbutton btn_back=new jbutton(撤销);jbutton btn_esc=new jbutton(退出);pu
32、blic loginfrm()jpanel jp=(jpanel)this.getcontentpane();jpanel jp1=new jpanel();jp1.setlayout(new gridlayout(7,2,5,10);jp1.add(lb_name);jp1.add(txt_name);jp1.add(lb_sex);jp1.add(cmb_sex);cmb_sex.additem(男);cmb_sex.additem(女);jp1.add(lb_profession);jp1.add(cmb_profession);cmb_profession.additem(学生);cm
33、b_profession.additem(教师);cmb_profession.additem(职工);cmb_profession.seteditable(true);jp1.add(lb_unit);jp1.add(cmb_unit);cmb_unit.additem(计算机系);cmb_unit.additem(工商管理系);cmb_unit.seteditable(true);cmb_profession.seteditable(true);jp1.add(lb_idnum);jp1.add(txt_idnum);jp1.add(lb_rdate);jp1.add(txt_rdate)
34、;jp1.add(lb_edate);jp1.add(txt_edate);jp.add(jp1,borderlayout.center);jpanel jp2=new jpanel();jp2.setlayout(new gridlayout(1,4);jp2.add(btn_add);jp2.add(btn_del);jp2.add(btn_back);jp2.add(btn_esc);jp.add(jp2,borderlayout.south);this.setdefaultcloseoperation(jframe.exit_on_close);this.settitle(图书证办理)
35、;btn_add.addactionlistener(this);btn_del.addactionlistener(this);btn_back.addactionlistener(this);btn_esc.addactionlistener(this);public void actionperformed(actionevent e)public static void main(string args)jframe.setdefaultlookandfeeldecorated(true);loginfrm frm=new loginfrm();frm.setsize(500, 400
36、);frm.setvisible(true);8、完成以下窗体制作(使用null布局)package ex5_8;import javax.swing.*;import java.awt.*;import java.awt.event.*;public class loginfrm extends jframe implements actionlistener jlabel lb_title=new jlabel(学生注册查询);jlabel lb_name=new jlabel(姓名);jlabel lb_snum=new jlabel(学号);jlabel lb_unit=new jla
37、bel(系别);jlabel lb_major=new jlabel(专业);jlabel lb_address=new jlabel(地址);jtextfield txt_name=new jtextfield(jtextfield1);jtextfield txt_snum=new jtextfield(jtextfield1);jtextfield txt_unit=new jtextfield(jtextfield1);jtextfield txt_major=new jtextfield(jtextfield1);jtextfield txt_address=new jtextfie
38、ld(jtextfield1);jbutton btn_add=new jbutton(添加);jbutton btn_inq=new jbutton(查询);jbutton btn_back=new jbutton(取消);public loginfrm()jpanel jp=(jpanel)this.getcontentpane();jp.setlayout(null);jp.add(lb_name);jp.add(lb_snum);jp.add(lb_address);jp.add(lb_major);jp.add(lb_title);jp.add(lb_unit);jp.add(txt
39、_address);jp.add(txt_major);jp.add(txt_name);jp.add(txt_snum);jp.add(txt_unit);jp.add(btn_add);jp.add(btn_back);jp.add(btn_inq);lb_title.setbounds(210,5,200,50);lb_snum.setbounds(80,80,100, 20);txt_snum.setbounds(120,80,100,20);lb_name.setbounds(280,80,100,20);txt_name.setbounds(320,80,100,20);lb_un
40、it.setbounds(80,120,100, 20);txt_unit.setbounds(120,120,100,20);lb_major.setbounds(280,120,100,20);txt_major.setbounds(320,120,100,20);lb_address.setbounds(80,160,100,20);txt_address.setbounds(120,160,300,20);btn_add.setbounds(60, 220, 80, 30);btn_inq.setbounds(210, 220, 80, 30);btn_back.setbounds(3
41、60, 220, 80, 30);this.setdefaultcloseoperation(jframe.exit_on_close);btn_add.addactionlistener(this);btn_inq.addactionlistener(this);btn_back.addactionlistener(this);public void actionperformed(actionevent e)public static void main(string args)loginfrm frm=new loginfrm();frm.setsize(500, 400);frm.setvisible(true); 9、运用swing控件完成下题package ex5_9;import javax.swing.*;import java.awt.*;import java.awt.event.*;public class myfrm extends jframe implements actionlistener jlabel lb_num=new jlabel(员工编号:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年高考地理试卷(湖北卷)
- 2026年企业数据防泄密解决方案
- 急诊科抢救车间护理流程
- 感统训练教室教案
- 急性呼吸窘迫综合征监测流程
- 精神分裂症精神科治疗方案
- 面部年轻化管理
- 肾内科血尿监测流程规范
- 2025年公务员(民生大数据应用)试题及答案
- 泌尿内科尿路感染洗净治疗流程
- 消防工程施工消防工程施工方案和技术措施
- 《肠造口并发症的分型与分级标准(2023版)》解读
- 入职心理测试题目及答案300道
- JTG F90-2015 公路工程施工安全技术规范
- 2024年湖南出版投资控股集团招聘笔试参考题库含答案解析
- 员工工资条模板
- YY/T 1856-2023血液、静脉药液、灌洗液加温器安全通用要求
- 铣刨加罩道路工程施工组织设计方案
- 小学德育分年段
- GB/T 13202-2015摩托车轮辋系列
- windows系统安全机制1课件
评论
0/150
提交评论