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

上传人:小飞机 文档编号:3436151 上传时间:2023-03-13 格式:DOCX 页数:18 大小:41.64KB
返回 下载 相关 举报
实验五 Java图形用户界面设计.docx_第1页
第1页 / 共18页
实验五 Java图形用户界面设计.docx_第2页
第2页 / 共18页
实验五 Java图形用户界面设计.docx_第3页
第3页 / 共18页
实验五 Java图形用户界面设计.docx_第4页
第4页 / 共18页
实验五 Java图形用户界面设计.docx_第5页
第5页 / 共18页
亲,该文档总共18页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《实验五 Java图形用户界面设计.docx》由会员分享,可在线阅读,更多相关《实验五 Java图形用户界面设计.docx(18页珍藏版)》请在三一办公上搜索。

1、实验五 Java图形用户界面设计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.*; pub

2、lic class MyFrm extends 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

3、 MyFrm /*获取当前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 main(

4、String arg) /*纯Java样式显示窗体*/ 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(

6、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;i+) jp2.add(btni+4); 5)、绝对布局 null:以坐标定位 容器.setLayout(null); 每个控件在放置在容器之前,必须设置其边界 setBounds(x,y,width,height); btn.setBounds(10,100

7、,30,60); 3、Swing示例Grid布局 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.getC

8、ontentPane; container.setLayout(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

9、); . public void actionPerformed(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(姓名); JButt

10、on btn = new JButton(查询); /* 组件在构造函数中放置在窗体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.setDefaul

11、tCloseOperation(JFrame.EXIT_ON_CLOSE); /* 事件处理方法*/ 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); 注意

12、:在做下列题目前仔细阅读第一个示例,彻底弄懂Swing界面设计 5.4实践编程 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 ActionListener JButton btn=new JButton(

13、Click Me); public MyFrm JPanel jp=(JPanel)this.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

14、 Me 按钮被点击); package Ex5_3; import javax.swing.*; import 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 都需要提示错误。 pack

15、age Ex5_4; import javax.swing.*; import java.awt.*; import java.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

16、 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.setDefaultCloseOperation(JFrame.

17、EXIT_ON_CLOSE); btn_OK.addActionListener(this); public 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.showMess

18、ageDialog(this, 用户名或密码输入错误!); else JOptionPane.showMessageDialog(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(4

19、00,200); frm.setVisible(true); 5、利用合适的布局和Swing控件完成下题 按照界面使用相应控件与合适的布局完成下题,要求按生成随机数按纽产生三个随机整数0到100之间,按计算平均数按纽计算平均值,如图所示,初始界面 参考:int x=(Math.random*41+60); 产生随机数 txt1.setText(x+”);将随机数赋予文本框txt1 package Ex5_5; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class MyFrm extends

20、JFrame implements ActionListener JLabel lbl =new JLabel(随机数字一); 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_sta

21、rt=new JButton(生成随机数); JButton btn_average=new JButton(计算平均数); 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); thi

22、s.setTitle(三个随机数字); this.setDefaultCloseOperation(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

23、.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.swing.*; import java.awt.

24、*; import java.awt.event.*; public class 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 c

25、lass MyFrm extends JFrame implements ActionListener 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)t

26、his.getContentPane; JPanel jp1=new JPanel; 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); th

27、is.setDefaultCloseOperation(JFrame.EXIT_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) Syste

28、m.out.println(座位1被选中); if(e.getSource=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 a

29、rgs) 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.*; public class LoginFrm extends JFrame implements Actio

30、nListener 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(有效日期:); JTextField txt_name=new JTextField; ; JComboBox cmb_

31、sex=new JComboBox; JComboBox cmb_profession=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(撤

32、销); JButton btn_ESC=new JButton(退出); public 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_

33、profession); cmb_profession.addItem(学生); cmb_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.

34、add(txt_IDnum); jp1.add(lb_rDate);jp1.add(txt_rDate); 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.setDefaultC

35、loseOperation(JFrame.EXIT_ON_CLOSE); this.setTitle(图书证办理); 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.setDefaultLookAndFeel

36、Decorated(true); LoginFrm frm=new LoginFrm; frm.setSize(500, 400); frm.setVisible(true); 8、完成以下窗体制作 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 J

37、Label(姓名); JLabel lb_snum=new JLabel(学号); JLabel lb_unit=new JLabel(系别); 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

38、_major=new JTextField(jTextField1); JTextField txt_address=new JTextField(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.ad

39、d(lb_address);jp.add(lb_major);jp.add(lb_title); jp.add(lb_unit);jp.add(txt_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,1

40、00,20); lb_name.setBounds(280,80,100,20); txt_name.setBounds(320,80,100,20); lb_unit.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

41、_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.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 exte

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号