2022年实验五Java图形用户界面设计参考 .pdf

上传人:C****o 文档编号:34262346 上传时间:2022-08-15 格式:PDF 页数:16 大小:448.73KB
返回 下载 相关 举报
2022年实验五Java图形用户界面设计参考 .pdf_第1页
第1页 / 共16页
2022年实验五Java图形用户界面设计参考 .pdf_第2页
第2页 / 共16页
点击查看更多>>
资源描述

《2022年实验五Java图形用户界面设计参考 .pdf》由会员分享,可在线阅读,更多相关《2022年实验五Java图形用户界面设计参考 .pdf(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 ex

2、tends JFrame/ 从 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 My

3、Frm() /* 获取当前 Frame 的内容面板 */ 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

4、main(String arg) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 16 页 - - - - - - - - - /* 纯 Java样式显示窗体 */ JFrame.setDefaultLookAndFeelDecorated(true); /* 实例化当前窗体类*/ MyFrm frm=new MyFrm(); frm.setSize(200,200); frm.setVisible(true); 2、常用布局1)、流布局:FlowLayout 从左到右,

5、 自上而下方式在容器中排列,控件的大小不会随容器大小变化 . 容器.setLayout(new FlowLayout(FlowLayout.LEFT); 2)、网格布局: GridLayout 按照指定行数与列数,将容器分成大小相等的单元格每个单元格放置一个控件. 不能将控件放在指定单元格容器.setLayout(new GridLayout(3,4,10,15); 3)、边界布局 :BorderLayout 将容器分成东、西、南、北、中五个部分容器.setLayout(new BorderLayout(); 窗口的内容面板默认布局就是边界布局。容器.add(控件,BorderLayout.N

6、ORTH); 4)、混合布局:使用JPanel, 将多个布局组合在一起使用JPanel jp=(JPanel)this.getContentPane(); for(int i=0;ibtn.length;i+) btni=new JButton(btn+i); JPanel jp1=new JPanel();/ 默认布局为 FlowLayout jp1.setLayout(new GridLayout(2,2); for(int i=0;i4;i+) jp1.add(btni); JPanel jp2=new JPanel();/ 默认布局为 FlowLayout for(int i=0;i4

7、;i+) jp2.add(btni+4); 5)、绝对布局null: 以坐标定位容器.setLayout(null); 每个控件在放置在容器之前,必须设置其边界setBounds(x,y,width,height); btn.setBounds(10,100,30,60); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 16 页 - - - - - - - - - 3、Swing 示例 Grid 布局import java.awt.*; import java.awt.

8、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.setLayout(new GridLayout( 3, 2 ); /

9、 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 actionPerformed(ActionEvent e) . if(e

10、.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(查询); /* 组件在构造函数中放置在窗体JFrame上 */

11、 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_CLOSE); 名

12、师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 16 页 - - - - - - - - - /* 事件处理方法 */ public void actionPerformed(ActionEvent e) JOptionPane.showMessageDialog(this, btn点击 ); public static void main(String arg) JFrame.setDefaultLookAndFeelDecorated(true);/ 设置纯 Java

13、样式MyFrm frm = new MyFrm(); frm.setSize(400, 300); frm.setVisible(true); 注意:在做下列题目前仔细阅读第一个示例,彻底弄懂Swing界面设计5.4 实践编程1、调试运行Swing 示例2、调试运行Java 事件处理示例3、依据题 1、2,编写如下界面名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 16 页 - - - - - - - - - 当用户点击 ” Click Me ” 按钮,显示消息对话框,消

14、息为 ” Click Me 按钮被点击 ” 。package Ex5_3; import javax.swing.*; import java.awt.*; import java.awt.event.*; publicclass MyFrm extends JFrame implements ActionListener JButton btn =new JButton(Click Me); public MyFrm() JPanel jp=(JPanel)this.getContentPane(); jp.setLayout(new FlowLayout(); jp.add(btn );

15、btn .addActionListener(this); this.setTitle(Action Event); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE ); publicvoid actionPerformed(ActionEvent e) JOptionPane.showMessageDialog( this, Click Me 按钮被点击 ); package Ex5_3; import javax.swing.*; import java.awt.*; import java.awt.event.*; publiccla

16、ss Test publicstaticvoid main(String args) MyFrm frm = new MyFrm(); frm.setSize(400, 300); frm.setVisible(true); 4、编写一个程序实现用户登录界面名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 16 页 - - - - - - - - - 当用户登录按下确定键,判断用户是否录入了用户名与密码,如果没有按或用户名不为admin 密码不为1234 都需要提示错误。p

17、ackage Ex5_4; import javax.swing.*; import java.awt.*; import java.awt.event.*; publicclass 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(); JButto

18、n btn_OK =new JButton( 登陆 ); JButton btn_Cancel=new JButton( 取消 ); public 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.setDefau

19、ltCloseOperation(JFrame.EXIT_ON_CLOSE ); btn_OK .addActionListener(this); publicvoid actionPerformed(ActionEvent e) String uname=txt_name.getText(); String upwd=txt_pwd.getText(); if(uname.equals( )|upwd.equals( ) JOptionPane.showMessageDialog( this, 用户名或密码未输入! ); elseif (!uname.equals(admin)|!upwd.

20、equals(1234 ) JOptionPane.showMessageDialog( this, 用户名或密码输入错误! ); else JOptionPane.showMessageDialog( this, 用户名或密码输入正确! ); package Ex5_4; import javax.swing.*; import java.awt.*; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 16 页 - - - - - - - - - import java.

21、awt.event.*; publicclass Test publicstaticvoid main(String args) JFrame. setDefaultLookAndFeelDecorated( true ); MyFrm frm= new MyFrm(); frm.setSize(400,200); frm.setVisible(true); 5、利用合适的布局和Swing 控件完成下题按照界面使用相应控件与合适的布局完成下题,要求按生成随机数按纽产生三个随机整数 0 到 100 之间,按计算平均数按纽计算平均值,如图所示,初始界面参考: int x=(Math.random(

22、)*41+60); 产生随机数txt1.setText(x+”);将随机数赋予文本框txt1 package Ex5_5; import javax.swing.*; import java.awt.*; import java.awt.event.*; publicclass MyFrm extends JFrame implements ActionListener JLabel lbl = new JLabel( 随机数字一 ); JLabel lb2 = new JLabel( 随机数字二 ); JLabel lb3 = new JLabel( 随机数字三 ); JLabel lb4

23、= 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( 计算平均数 ); public MyFrm() JPanel jp=(JPanel)this.getContentPane(); jp.

24、setLayout(new GridLayout(5,2,10,5); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 16 页 - - - - - - - - - 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.setT

25、itle( 三个随机数字 ); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE ); btn_start.addActionListener(this); btn_average.addActionListener(this); publicvoid 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

26、); txt2.setText(y+ ); int z=( int)(Math.random ()*41+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.

27、swing.*; import java.awt.*; import java.awt.event.*; publicclass Test publicstaticvoid main(String args) MyFrm frm= new MyFrm(); frm.setSize(400,200); frm.setVisible(true); 6 编写程序实现如下界面,实现事件如果按下座位i 就在控制台中显示 “座位 i 被选中” 例如按下“ 座位 0“,则输出座位0 被选中”名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师

28、精心整理 - - - - - - - 第 9 页,共 16 页 - - - - - - - - - package Ex5_6; import javax.swing.*; import java.awt.*; import java.awt.event.*; publicclass MyFrm extends JFrame implements ActionListener JButton btn0 =new JButton( 讲台 ); JButton btn1 =new JButton( 座位 1 ); JButton btn2 =new JButton( 座位 2 ); JButton

29、 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(); jp1.setLayout(new GridLayout(); jp1.add(btn0 ); jp.add(jp1,BorderLayout.NORTH ); JPane

30、l 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.EXIT_ON_CLOSE ); btn1 .addActionListener(this); btn2 .addActionListener(this); btn

31、3 .addActionListener(this); btn4 .addActionListener(this); btn5 .addActionListener(this); btn6 .addActionListener(this); publicvoid actionPerformed(ActionEvent e) if(e.getSource()=btn1 ) System.out .println( 座位 1被选中 ); if(e.getSource()=btn2 ) System.out .println( 座位 2被选中 ); if(e.getSource()=btn3 ) S

32、ystem.out .println( 座位 3被选中 ); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 16 页 - - - - - - - - - if(e.getSource()=btn4 ) System.out .println( 座位 4被选中 ); if(e.getSource()=btn5 ) System.out .println( 座位 5被选中 ); if(e.getSource()=btn6 ) System.out .println( 座位

33、 6被选中 ); publicstaticvoid main(String args) MyFrm frm= new MyFrm(); 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.*; publicclas

34、s LoginFrm extends JFrame implements ActionListener JLabel lb_name =new JLabel( 姓名: ); 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(有效日期:

35、); JTextField txt_name=new JTextField(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 16 页 - - - - - - - - - JComboBox cmb_sex =new JComboBox(); JComboBox cmb_profession=new JComboBox(); JComboBox cmb_unit=new JComboBox(); JTextField txt_IDnum=new JTextField

36、(); 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( 退出 ); public LoginFrm() JPanel jp=(JPanel)this.getContentPane(); JPanel jp1=new

37、 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( 学生 ); cmb_profession.addItem( 教师 ); cmb_profession.addItem(

38、 职工 ); 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); jp1.add(lb_eDate);jp1.add(txt_e

39、Date); 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(图书证办理 ); btn_ADD .addAct

40、ionListener(this); btn_DEL .addActionListener(this); btn_BACK .addActionListener(this); btn_ESC .addActionListener(this); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 16 页 - - - - - - - - - publicvoid actionPerformed(ActionEvent e) publicstaticvoid main(Stri

41、ng args) JFrame. setDefaultLookAndFeelDecorated( true ); LoginFrm frm=new LoginFrm(); frm.setSize(500, 400); frm.setVisible(true); 8、完成以下窗体制作(使用null 布局)package Ex5_8; import javax.swing.*; import java.awt.*; import java.awt.event.*; publicclass LoginFrm extends JFrame implements ActionListener JLabe

42、l lb_title=new JLabel(学生注册查询 ); JLabel lb_name =new JLabel( 姓名 ); JLabel lb_snum =new JLabel( 学号 ); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 16 页 - - - - - - - - - JLabel lb_unit=new JLabel( 系别 ); JLabel lb_major=new JLabel(专业 ); JLabel lb_address=new JL

43、abel( 地址 ); 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 JTextField(jTextField1); JButton btn_ADD =new JButton( 添加 ); JBu

44、tton 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_address);jp.add(txt_major);jp.add(tx

45、t_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_unit.setBounds(80,120,100,

46、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, 3

47、0); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE ); btn_ADD .addActionListener(this); btn_INQ .addActionListener(this); btn_BACK .addActionListener(this); publicvoid actionPerformed(ActionEvent e) publicstaticvoid main(String args) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整

48、理 - - - - - - - 第 14 页,共 16 页 - - - - - - - - - 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.*; publicclass MyFrm extends JFrame implements ActionListener JLabel lb_num =new JL

49、abel( 员工编号: ); JLabel lb_thing=new JLabel(借用器具: ); JLabel lb_sDate=new JLabel(借用日期: ); JLabel lb_eDate=new JLabel(归还日期: ); JLabel lb_reason=new JLabel( 借用原因: ); JTextField txt_num =new JTextField(); JTextField txt_thing=new JTextField(); JTextField txt_sDate=new JTextField(); JTextField txt_eDate=ne

50、w JTextField(); JTextField txt_reason=new JTextField(); JButton btn_OK =new JButton(确定 ); JButton btn_CANCEL=new JButton( 取消 ); public MyFrm() JPanel jp=(JPanel)this.getContentPane(); JPanel jp1=new JPanel(); jp1.setLayout(new FlowLayout(FlowLayout.LEFT); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - -

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

当前位置:首页 > 教育专区 > 高考资料

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

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