java的GUI编程初步.docx

上传人:飞****2 文档编号:52736930 上传时间:2022-10-23 格式:DOCX 页数:13 大小:868.29KB
返回 下载 相关 举报
java的GUI编程初步.docx_第1页
第1页 / 共13页
java的GUI编程初步.docx_第2页
第2页 / 共13页
点击查看更多>>
资源描述

《java的GUI编程初步.docx》由会员分享,可在线阅读,更多相关《java的GUI编程初步.docx(13页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、 南昌大学实验报告学生姓名: 学 号: 专业班级: 实验类型: 验证 综合 设计 创新 实验日期:2012年5月17日 实验成绩: 第11章 java的GUI 编程初步实验内容:(1)按钮有序排列(2)密码验证问题(3)名片录入管理界面设计(4)文字字体设计窗体实验1、按钮有序排列实验目的: (1) 了解 GUI 的概念 ; (2) 了解 java.awt 包和 javax.swing 包, 以及比较它们具有的同性质的组件的异同; (3) 掌握和运用 Java 的基本GUI 组件, 了解它们的特点。 实验任务: 本实验要求定义按钮若干让它们按照从左向右的顺序依次排列, 显示5个带图标的按钮。实

2、验步骤: 在 Eclipse 中新建一个 Chapter11项目 , 按照下列要求完成实验。练习: 调试和运行程序 ButtonCounter.java; 要求: 在当前项目Chapter11中, 新建一个文件ButtonCounter.java, 将程序清单11-1 中的程序输入并保存。该程序可以定义按钮若干使它们按照从左向右的顺序依次排列, 显示5个带图标的按钮 , 运行结果如图1所示。阅读和分析程序ButtonCounter.java, 调试编译并运行该程序。图1程序清单 11-1 ButtonCounter.java /ButtonCounter.java import javax.s

3、wing.*; import java.awt.*; public class ButtonCounter extends JFrame public ButtonCounter() super(显示按钮窗口); ImageIcon Icon = new ImageIcon(image/image.gif); JButton jbt1 = new JButton(按钮,Icon); JButton jbt2 = new JButton(按钮,Icon); JButton jbt3 = new JButton(按钮,Icon); JButton jbt4 = new JButton(按钮,Ico

4、n); JButton jbt5 = new JButton(按钮,Icon); JPanel p1 = new JPanel(); p1.add(jbt1); JPanel p2 = new JPanel(); p2.add(jbt2); JPanel p3 = new JPanel(); p2.add(jbt3); JPanel p4=new JPanel(); p4.add(jbt4); JPanel p5=new JPanel(); p5.add(jbt5); getContentPane().setLayout(new FlowLayout(); getContentPane().a

5、dd(p1); getContentPane().add(p2); getContentPane().add(p3); getContentPane().add(p4); getContentPane().add(p5); public static void main(String args) / Create a frame and set its properties JFrame frame = new ButtonCounter(); frame.pack(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.s

6、etVisible(true); 运行结果:思考 (1) 在程序的 main() 方法中有语句Frame.pack(), 该方法的作用是什么 ? 该方法的作用是自动确定Frame的大小。(2) 程序中语句Frame.setDefaultCloseOperation(JFrame.EXIT-ON-CLOSE); 的作用是什么 ? 去掉该语句 , 程序会出现怎样的运行结果 ? 该语句的作用是使执行程序结束。去掉该语句,关闭窗口,但是命令提示符并没有正常结束。需要按Ctrl+C才行。(3) 如果将程序中的语句 getContentPane().setLayout(new FlowLayout();

7、去掉 , 程序的运行结果会发生变化吗 ? 如果不发生变化是什么原因 ? 如果发生变化 , 会出现什么现象 ? 请解释原因。 程序的运行结果会发生变化,只出现一个按钮。因为去掉该语句后,布局管理器被取消了,只有调用每个组件的相关方法,才能为这些组件在容器中一一定位。(4) 如果将程序中的按钮组件 jbtl 换成 java.awt 包中的 Button 组件对象 , 换过后的组件和原来的 JButton 在外观上会出现什么不同 ? 颜色不同,Button 组件颜色是灰色,同JPanel相同。注意 : 在使用 Eclipse 时 , 如果在运行的时候希望能调用一些图片 , 可以将图片放在定义该项目

8、Chapterll 下的目录 image 中 , 如果没有该目录 , 需要用户自己定义一个 image 目录。在编写程序的时候 , 就可以通过相对路径 “image/xxx.gif 等形式装载图片。 实验2、密码验证问题实验目的 : (l) 进一步了解和掌握 javax.swing 包中的常用 GUI 组件 ; (2) 比较 Swing 包中的 JTextField 和 JPasswordField 在使用中的异同 ; (3) 初步了解和运用事件处理机制和 Action 事件的处理。 实验任务: 编写一个 Java 程序 , 实现用户根据自己的密码进入界面, 如果用户输入信息正确 , 则输出

9、“ 欢迎u29992X户 ”, 否则用户还可以尝试两次 , 如果尝试阶段输入信息错误, 则输出 “ 请输入正确的信息 ”, 如果尝试失败 , 用户则退出。 实验步骤 : 打开 Eclipse, 打开一个已有项目如 Chapter11, 在该项目下完成如下练习。 练习: 密码验证 要求: 在当前项目如Chapter11下, 新建一个文件PasswordVerification.java, 将程序清单 11-2 中的程序输入并保存。要求该程序完成如下功能 : 用户根据自己的密码进入界面 , 如果用户输入信息正确 , 则输出 “ 欢迎 ”, 否则用户还可以尝试两次 , 如果尝试阶段输入信息错误 ,

10、则输出 “请输入正确的信息” , 如果尝试失败 , 用户则退出。调试并编译程序 PasswordVerification.java, 运行该程序 , 运行结果如图2 、图 3和图 4所示 , 请将该程序中的代码1代码7补充完整。 图2图3图4程序清单 11-2 PasswordVerification.java /PasswordVerification.java import javax.swing.*; import java.awt.event.*; import java.awt.*; public class PasswordVerification extends JFrame i

11、mplements ActionListener JLabel userLabel;/定义用户标签提示 JLabel passwordLabel;/定义密码标签提示 JTextField userText;/定义用户文本框 JPasswordField passwordText;/定义密码文本框 int count=1;/统计输入信息的次数 public PasswordVerification() super(请输入信息); Container container=getContentPane();/得到容器对象container; container.setLayout(new FlowL

12、ayout();/设置默认布局 userLabel=new JLabel(用户名);/创建用户标签 passwordLabel=new JLabel(密 码);/创建密码标签 userText=new JTextField();/创建用户文本输入框 passwordText=new JPasswordField();/创建密码输入文本框 passwordText.addActionListener(this);/注册事件监听者; container.add(userLabel); container.add(userText); container.add(passwordLabel);con

13、tainer.add(passwordText); setSize(240,100); setVisible(true); public void actionPerformed(ActionEvent e)/事件处理 String userName=new String(陈三);/假设为正确的用户名; String password=new String();/假设为正确的密码; if(e.getSource()=passwordText) count+; char passwords=passwordText.getPassword(); if(userText.getText().equ

14、als(userName)&password.equals(new String(passwords) JOptionPane.showMessageDialog(null, 欢迎您: + userName); System.exit(0); else if(count3) System.exit(0); else JOptionPane.showMessageDialog(null,userText.getText()+请输入正确信息); public static void main(String args) PasswordVerification pv=new PasswordVeri

15、fication(); pv.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 运行结果:思考 (1) 程序 PasswordVerification.java 中第 3 行语句 java.awt.* 的作用是什么 ? 引入java.awt包中所有的类。(2) 程序 actionPerformed() 方法中 if(e.getSource()=passwordText) 的作用是什么 ? 如果去掉该条件判断 , 程序运行结果会发生什么变化 ? 该语句的作用是判断事件源是否为passwordText。去掉该条件判断,程序运行结果无变化。(3) 观察程

16、序actionperformed() 方法中语句charpasswords =passwordText.getPassword();的作用是什么 ? 从密码文本框获取密码,并将其存入passwords数组中。(4) 观 察 程 序 中 定 义 的 main() 方 法 , 如 果 在 PasswordVerification pv=new passwordverification(); 语句后 , 添加语句 System.exit(0), 会出现什么问题 , 为什么 ? 程序被终止运行,因为该语句的作用是终止当前正在运行的 Java 虚拟机。(5) 从给定程序的运行结果看 , 密码输入的回显字

17、符是 *, 如果把回显字符换成#, 该如何处理 ? 在构造函数中添加passwordText.setEchoChar(#);语句。(6) 如果要求在信息输入错误处理中 , 一旦输入完密码信息 , 用户输入框和密码输入框可以清空 , 请将上述程序修改 , 使之实现该功能。 在最后一个else中添加以下代码:userText.setText();passwordText.setText();实验3、名片录入管理界面设计实验目的 : (l) 进一步了解和运用常用的 GUI 组件 ; (2) 深入了解和运用 5 种常用的布局管理 :FlowLayout、BorderLayout、 CardLayout

18、、GridLayout 和 GridBagLayout, 掌握 5 种布局管理的特点 , 并掌握一些常用组件容器的默认布局管理方式 : (3) 比较常用的布局管理方式的不同和使用的条件。 实验任务 : 设计一个简单的通用名片录入界面 , 名片的信息包括姓名、称谓、工作单位、工作地址、电话 1 、电话 2 、手机、传真、邮编等基本内容。本实验由下面两个练习组成。练习: 设计顺序排列的名片录入管理界面 ; 实验步骤 : 打开 Eclipse, 打开一个项目如 Chapter11, 在该项目下完成如下练习。 练习 设计顺序排列的名片录入管理界面,本练习是考察用户对 FlowLayout 布局管理器的

19、应用。 要求 : 在当前项目如 Chapte11下, 新建一个文件CardManager.java,将程序清单11-3中的程序输入并保存。通过一个CardManager.java文件 , 实现一个简单的通用名片录入界面 , 名片的信息包括姓名、称谓 ( 可以包括总裁、总经理、经理、主任、处长、 院长、校长、科长、教授、博士等 ) 、工作单位、工作地址、电话 1 、电话 2 、手机、传真、邮编等基本内容 , 用户选择确定按钮 , 表示输入 , 如果选择取消按钮 , 表示关闭窗口。运行结果可以如图5所示。观察运行结果 , 阅读和分析程序 CardManager.java,请将程序中代码1代码7处补

20、充完整。图5程序清单11-3 CardManager.java /CardManager.java import javax.swing.*; import java.awt.*; import java.awt.event.*; public class CardManager extends JFrame JLabel nameLabel,sexLabel,titleLabel,unitLabel; JLabel addressLabel,telLabel1,telLabel2,mobileLabel,faxLabel,emailLabel; JTextField nameTxt,unit

21、Txt,addressTxt;JTextField telTxt1,telTxt2,mobileTxt,faxTxt,emailTxt; JRadioButton sexBtn1,sexBtn2; JComboBox titleBx; JButton okBtn,cancelBtn; public CardManager() super(名片录入管理);Container c=getContentPane(); JPanel centerPanel=new JPanel();/输入面板 nameLabel=new JLabel(姓名);/定义姓名标签 nameTxt=new JTextFiel

22、d(10);/定义姓名文本输入框 centerPanel.add(nameLabel); centerPanel.add(nameTxt); sexLabel=new JLabel(性别);/定义性别标签 sexBtn1=new JRadioButton (男);/定义性别单选按钮1 sexBtn2= new JRadioButton (女);/定义性别单选按钮2 ButtonGroup group=new ButtonGroup(); group.add(sexBtn1); group.add(sexBtn2); centerPanel.add(sexLabel); centerPanel.

23、add(sexBtn1); centerPanel.add(sexBtn2); titleLabel=new JLabel(称谓);/定义称谓标签 String title=总裁”,”总经理”,”经理”,”主任”,”处长”,”院长”,”校长”,”科长,教授,讲师;/定义称谓内容 titleBx=new JComboBox();/创建称谓文本输入框 titleBx.setMaximumRowCount(5); centerPanel.add(titleLabel); centerPanel.add(titleBx); unitLabel=new JLabel(工作单位);/定义工作单位标签 un

24、itTxt=new JTextField(30);/定义工作单位输入框 centerPanel.add(unitLabel); centerPanel.add(unitTxt); addressLabel=new JLabel(工作地址);/定义工作地址标签 addressTxt=new JTextField(30); /定义工作地址输入框 centerPanel.add(addressLabel); centerPanel.add(addressTxt); telLabel1=new JLabel(电话);/定义电话1标签 telTxt1=new JTextField(15);/定义电话1输

25、入框 centerPanel.add(telLabel1); centerPanel.add(telTxt1); telLabel2=new JLabel(电话);/定义电话2标签 telTxt2=new JTextField(15); /定义电话2输入框 centerPanel.add(telLabel2); centerPanel.add(telTxt2); mobileLabel=new JLabel(手机);/定义手机标签 mobileTxt=new JTextField(15); /定义手机输入框 centerPanel.add(mobileLabel); centerPanel.a

26、dd(mobileTxt); faxLabel=new JLabel(传真);/定义传真标签 faxTxt=new JTextField(15);/定义传真输入框 centerPanel.add(faxLabel); centerPanel.add(faxTxt); emailLabel=new JLabel(E-mail);/定义email标签 emailTxt=new JTextField(32);/定义email输入框 centerPanel.add(emailLabel); centerPanel.add(emailTxt); JPanel sPanel=new JPanel();/按

27、钮面板 okBtn=new JButton(确定);/定义确定按钮 cancelBtn=new JButton(取消);/定义取消按钮 cancelBtn.addActionListener(new ActionListener()/监视cancelBtn的动作 public void actionPerformed(ActionEvent e) if(e.getSource()=cancelBtn)/判断事件源是否是cancelBtn; System.exit(0); ); sPanel.add(okBtn); sPanel.add(cancelBtn); c.setLayout(new B

28、orderLayout(); c.add(centerPanel, BorderLayout.CENTER);/将centerPanel放置c中的中间位置; c.add(sPanel, BorderLayout.SOUTH);/将sPanel 放置c中的南面的位置; setSize(418,250); setVisible(true); public static void main(String args) CardManager cm=new CardManager(); cm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 运行结果:思考

29、(2) 观察程序 CardManager() 方法中的程序段 : ButtonGroup group=newButtonGroup(); group.add(sexBtnl);group.add(sexBtn2); 组件对象 group 的作用是什么 ? 如果将 group 去掉 , 程序的运行结果会发生什么变化? 为什么 ? group 的作用是定义单选按钮控件组。如果将 group 去掉,添加的两个性别选择按钮可以同时选定,因为此时是向Jframe类中分别添加两个单选按钮,它们之间没有影响。(2) 观察运行结果 , 如果将窗口的大小改变 , 运行结果会发生什么变化? 为什么? 窗口的大小改

30、变时,组件的位置会变化,但组件的大小不改变。因为布局管理器为BorderLayout()。实验4、文字字体设计窗体实验目的 : (1) 进一步了解 Swing 包中的高级 GUI 组件 ; (2) 了解项目事件的处理以及匿名对象在事件处理中的应用 ; (3) 了解和运用 Swing 包中的外观设置。 实验任务 : 设计一个文字字体设计窗体 , 在该窗体中可以设置要显示文字的字体内容 , 包括字体名称、字体大小、粗体和斜体等字体风格。 实验步骤 : 打开 Eclipse, 选择已有的项目如 Chapter11, 然后按照下列要求完成实验。 要求 : 在当前项目如 Chapter3.jpx 下 ,

31、 新建一个文件 ArtFont.java, 将程序清单11-4中的程序输入并保存。本练习的要求是设计一个字体设计的窗体 , 使用户可以根据选择 , 将字体按照字体名称、字体大小、粗体和斜体风格进行设置。阅读和分析程序清单 11-4中的 ArtFont.java, 将程序中程序段1程序段4补充完成 , 并回答思考题。程序的运行结果如图6所示。 图6程序清单11-4 ArtFont.java /ArtFont.java import javax.swing.*; import java.awt.*; import java.awt.event.*; public class ArtFont ext

32、ends JFrame implements ActionListener JComboBox fontType,fontSize; JCheckBox boldBx;/粗体按钮 JCheckBox italicBx;/斜体按钮 JButton colorBtn;/颜色按钮; String fontNames;/字体名称; String fontSizes;/字体尺寸; JLabel label;/输入提示标签; JTextField inputText;/文字输入框; JTextArea txtArea;/文字显示区; JPanel fontPanel;/字体设置; JPanel showP

33、anel;/显示效果区 Font font; int boldStyle,italicStyle,underlineStyle; int fontSizeStyle; String fontNameStyle; Color colorStyle=Color.black;/设置字体的默认颜色为黑色; public ArtFont() super(字体设置); /设置默认字体 boldStyle=0; italicStyle=0; underlineStyle=0; fontSizeStyle=10; fontNameStyle=宋体; font=new Font(fontNameStyle,bo

34、ldStyle+italicStyle,fontSizeStyle); fontPanel=new JPanel(); fontPanel.setLayout(new FlowLayout(); /设置字体名字 GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment(); fontNames=ge.getAvailableFontFamilyNames();/获得系统中所有字体的名字; fontType=new JComboBox(fontNames); fontType.setEditable(false)

35、; fontType.setMaximumRowCount(10); fontType.addItemListener(new ItemListener() public void itemStateChanged(ItemEvent e) /实现监听字体名字改变的事件 int num = new Integer(fontSize.getSelectedItem().toString().intValue(); font = new Font(fontType.getSelectedItem().toString(), Font.PLAIN, num); txtArea.setFont(fon

36、t); ); /设置字体大小 fontSizes=new String63; for(int i=0;i63;i+) fontSizesi=Integer.toString(i+10); fontSize=new JComboBox(fontSizes); fontSize.setEditable(false); fontSize.setMaximumRowCount(10); fontSize.addItemListener(new ItemListener() public void itemStateChanged(ItemEvent e) /实现监听字体大小改变的方法 int num

37、= new Integer(fontSize.getSelectedItem().toString().intValue(); font = new Font(fontType.getSelectedItem().toString(), Font.PLAIN, num); txtArea.setFont(font); ); /设置粗体选择按钮; boldBx=new JCheckBox(粗体); boldBx.addItemListener(new ItemListener() public void itemStateChanged(ItemEvent e) /实现监听选择粗体状态改变的方法

38、 int num = new Integer(fontSize.getSelectedItem().toString().intValue(); if (italicBx.isSelected() & boldBx.isSelected() font = new Font(fontType.getSelectedItem().toString(), Font.ITALIC + Font.BOLD, num); txtArea.setFont(font); else if (boldBx.isSelected() font = new Font(fontType.getSelectedItem(

39、).toString(), Font.BOLD, num); txtArea.setFont(font); ); /设置斜体选择按钮; italicBx=new JCheckBox(斜体); italicBx.addItemListener(new ItemListener() public void itemStateChanged(ItemEvent e) /实现监听选择斜体状态改变的方法 int num = new Integer(fontSize.getSelectedItem().toString().intValue(); if (italicBx.isSelected() & b

40、oldBx.isSelected() font = new Font(fontType.getSelectedItem().toString(), Font.ITALIC + Font.BOLD, num); txtArea.setFont(font); else if (italicBx.isSelected() font = new Font(fontType.getSelectedItem().toString(), Font.ITALIC, num); txtArea.setFont(font); ); /设置颜色选择; colorBtn=new JButton(颜色); colorB

41、tn.addActionListener(this); /设置字体面板; fontPanel.add(fontType); fontPanel.add(fontSize); fontPanel.add(boldBx); fontPanel.add(italicBx); fontPanel.add(colorBtn); /设置输入提示标签 label=new JLabel(输入); /设置文本输入框; inputText=new JTextField(30); inputText.addActionListener(this); /设置文本显示区; txtArea=new JTextArea(1

42、0,80);/20行80列; txtArea.setFont(font); /设置文本面板; showPanel=new JPanel(); showPanel.add(label); showPanel.add(inputText); showPanel.setLayout(new FlowLayout(); showPanel.add(new JScrollPane(txtArea); /设置容器; Container container=getContentPane(); container.setLayout(new BorderLayout(); container.add(font

43、Panel,BorderLayout.NORTH); container.add(showPanel,BorderLayout.CENTER); setSize(500,300); setVisible(true); public void actionPerformed(ActionEvent e) if(e.getSource()=colorBtn)/改变颜色 colorStyle=JColorChooser.showDialog(this,选择字体颜色,colorStyle); colorBtn.setForeground(colorStyle); txtArea.setForeground(colorStyle); else if(e.getSource()=inputText)/将输入文字在文字显示区表示; txtArea.setText(inputText.getText(); public stat

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

当前位置:首页 > 教育专区 > 教案示例

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com