实验五 Java图形用户界面设计(16页).doc

上传人:1595****071 文档编号:35962410 上传时间:2022-08-24 格式:DOC 页数:16 大小:818KB
返回 下载 相关 举报
实验五 Java图形用户界面设计(16页).doc_第1页
第1页 / 共16页
实验五 Java图形用户界面设计(16页).doc_第2页
第2页 / 共16页
点击查看更多>>
资源描述

《实验五 Java图形用户界面设计(16页).doc》由会员分享,可在线阅读,更多相关《实验五 Java图形用户界面设计(16页).doc(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

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 JFr

2、ame/从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布局

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

8、tLayout(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 actio

9、nPerformed(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_CLO

11、SE); /* 事件处理方法*/ 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.*;impo

14、rt 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 j

15、ava.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

16、MyFrm() 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); publi

17、c 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.sh

18、owMessageDialog(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 JButto

21、n(计算平均数); 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+

23、60); 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 ActionLis

25、tener 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.EX

27、IT_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.getSour

28、ce()=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 JLa

30、bel(姓名:);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_profes

31、sion=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(退出);p

32、ublic 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(学生);c

33、mb_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, 40

36、0);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 JL

37、abel(系别);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 JTextFi

38、eld(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(tx

39、t_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_u

40、nit.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(360, 220, 80, 30);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);btn_ADD.addActionListener(this);btn_INQ.addActionListener(this);btn_BACK.addAc

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 单元课程

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁