实验五Java图形用户界面设计

上传人:jun****875 文档编号:17808267 上传时间:2020-12-07 格式:DOC 页数:16 大小:840.41KB
收藏 版权申诉 举报 下载
实验五Java图形用户界面设计_第1页
第1页 / 共16页
实验五Java图形用户界面设计_第2页
第2页 / 共16页
实验五Java图形用户界面设计_第3页
第3页 / 共16页
资源描述:

《实验五Java图形用户界面设计》由会员分享,可在线阅读,更多相关《实验五Java图形用户界面设计(16页珍藏版)》请在装配图网上搜索。

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.se

42、tVisible(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(员工编号:);JLabel lb_thing=new JLabel(借用器具:);JLabel lb_sDate=new JLabel(借用日期:);JLabel lb_eDate=new JLabel(归还日期:

43、);JLabel lb_reason=new JLabel(借用原因:);JTextField txt_num=new JTextField();JTextField txt_thing=new JTextField();JTextField txt_sDate=new JTextField();JTextField txt_eDate=new JTextField();JTextField txt_reason=new JTextField();JButton btn_OK=new JButton(确定);JButton btn_CANCEL=new JButton(取消);public M

44、yFrm()JPanel jp=(JPanel)this.getContentPane();JPanel jp1=new JPanel();jp1.setLayout(new FlowLayout(FlowLayout.LEFT);jp1.add(lb_num);jp1.add(txt_num);jp1.add(lb_thing);jp1.add(txt_thing);jp1.add(lb_sDate);jp1.add(txt_sDate);jp1.add(lb_eDate);jp1.add(txt_eDate);jp1.add(lb_reason);jp1.add(txt_reason);t

45、xt_num.setPreferredSize(new Dimension(120, 25);txt_thing.setPreferredSize(new Dimension(120, 25);txt_sDate.setPreferredSize(new Dimension(120, 25);txt_eDate.setPreferredSize(new Dimension(120, 25);txt_reason.setPreferredSize(new Dimension(315, 25);jp.add(jp1,BorderLayout.CENTER);JPanel jp2=new JPane

46、l();jp2.setLayout(new GridLayout(1,2);jp2.add(btn_OK);jp2.add(btn_CANCEL);jp.add(jp2,BorderLayout.SOUTH);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setTitle(借用物品);btn_OK.addActionListener(this);btn_CANCEL.addActionListener(this);public void actionPerformed(ActionEvent e)public static void main(String args)MyFrm frm=new MyFrm();frm.setSize(500, 200);frm.setVisible(true);

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!