




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验三Java的GUI编程(一)开发文字字体设计窗体【实验目的】(1)了解 GUI 的概念;( 2) 了解 java.awt 包和 javax.swing 包,并比较它们具有的同性质的组件的异同;(3) 掌握和运用 Java 的基本 GUI 组件,了解他们的特点。【实验任务】要求设计一个文字字体设计窗体,在该窗体中可以设置要显示文字的字体内容,包括 字体名称、字体大小、粗体和斜体等字体风格。并模拟在不同操作系统下的显示效果。【 实验内容 】阅读并分析以下程序,将程序中的代码补充完整,编译并运行程序,查看结果。/ArtFont.javaimport javax.swing.*;import ja
2、va.awt.*;import java.awt.event.*;public class ArtFont extends JFrame implementsActionListener,ItemListenerJComboBoxfontType ,fontSize ;JCheckBoxboldBx ;/粗体按钮JCheckBoxitalicBx/ 斜体按钮JButtoncolorBtn ;/颜色按钮;StringfontNames)/ 字体名称 ;StringfontSizes)/ 字体尺寸;JLabellabel ; / 输入提示标签;JTextFieldinputText; / 文字输入
3、框JTextAreatxtArea; /文字显示区 ;JPanelfontPanel ;/字体设置;JPanelshowPanel ;/显示效果区Font font ;int boldStyle , italicStyle, underlineStyle ;int fontSizeStyle ;String fontNameStyle ;Color colorStyle =Color. black ; / 设置字体的默认颜色为黑色Stri ngstyle = 默认显示效果,Windows 显示效果,Unix 显示效果;JComboBoxstyleBtnpublic ArtFont() supe
4、r (字体设置); /设置默认字体boldStyle =0; italicStyle un derl in eStyle fon tSizeStyle=0;fon tNameStyleFont(font = new=0;=10;=宋体;fontNameStyle, boldStyle +italicStyle,fontSizeStyle);fon tPa nel= new JPa nel();.setLayout(/设置字体名字GraphicsE nviro nmentge=GraphicsE nviro nment.fon tPa nelnew FlowLayout();getLocalGr
5、aphicsE nvir onmentfon tNamesfon tType fon tType fon tType fon tType=ge.getAvailableF on tFamilyNames();= new JComboBox(fon tNames );.setEditable( false ); .setMaximumRowCou nt(1O);.addItemListe ner(new ItemListe ner()void itemStateCha nged(ltemEve nt e)/();获得系统中所有字体的名字;public/实现监听字体名字改变的事件String it
6、em=(String) e.getItem(); System.out .println(item);=item;fon tNameStyle font = newFont(fon tNameStyletxtArea,boldStyle +italicStyle , fontSizeStyle代码1;/设置显示区字体););/fon tSizes设置字体大小= new Strin g63;for ( int i=0;i63;i+) fon tSizesi=In teger.toStri ng(i+10);fon tSizefon tSize= new JComboBox( fon tSizes
7、 .setEditable( false ););fon tSizefon tSize.setMaximumRowCou nt(10);.addltemListe ner(new ItemListe ner()void itemStateCha nged(ltemEve nt e)/设置JComboBox 显示的最大行数。public/实现监听字体大小改变的方法String size=(String)e.getltem();fon tSizeStyle=ln teger.parse Int (size);font = newFont( fontNameStyle, boldStyle +ita
8、licStyle , fontSizeStyle);txtArea .setF ont( font ););/设置粗体选择按钮;boldBx =new JCheckBox( 粗体);boldBx .addltemListe ner(new ItemListe ner()public void itemStateCha nged(ltemEve nt e)/实现监听选择粗体状态改变的方法if (e.getSource()=boldBx &e.getStateChange()=e.SELECTED)boldStyle = 代码2;/设置字体为粗体font =new Font(fontNameSty
9、le, boldStyle +italicStyle , fontSizeStyle );txtArea .setFont( font ););/设置斜体选择按钮;italicBx=new JCheckBox(斜体);italicBx.addItemListe ner(new ItemListe ner()public void itemStateCha nged(ltemEve nt e)/实现监听选择斜体状态改变的方法if (e.getSource()= italicBx&e.getStateChange()=e.SELECTED)italicStyle= 代码3;/设置字体为斜体font
10、 =new Font(fontNameStyle , boldStyle +italicStyle , fontSizeStyle);txtArea.setFont(font ););/设置颜色选择;colorBtn =new JButton(颜色);colorBtn.addActi on Liste ner(this/设置字体面板;fon tPa nel.add(fon tType );fon tPa nel.add(fon tSize);fon tPa nel.add(boldBx );fon tPa nel.add(italicBx);fon tPa nel.add(colorBtn )
11、;/设置输入提示标签label =new JLabel( 输入);/设置文本输入框;in putText=new JTextField(30);in putText.addActi on Liste ner(this );/设置文本显示区;txtArea =new JTextArea(10,80);20 行80 列;txtArea .setF ont( font );/设置窗口的样式styleBt n= new JComboBox(style );styleBt n.addItemListe ner(this );/设置文本面板;showPa nel =new JPa nel();showPa
12、 nel .add( label );showPa nel .add( in putText);showPa nel .setLayout( new FlowLayout();showPa nel .add( new JScrollPa ne( txtArea );showPa nel.add(styleBt n);/设置容器;Container contain er=getC onten tPa ne();contain er.setLayout(new BorderLayout();NORTH);CENTER);contain er.add(fon tPa nel,BorderLayout
13、.contain er.add(showPa nel ,BorderLayout.setSize(500,300);setVisible(true ); public void itemStateCha nged(ltemEve nt e) public void acti on Performed(Acti on Eve nt e) /改变颜色 showDialogif (e.getSource()= colorStyle,colorStylecolorBt ncolorBt n=JColorChooser.);.setForegrou nd(colorStyle);txtArea.setF
14、oregrou nd(colorStyle);else iftxtArea(e.getSource()=.setText(in putText)in putText.getText();(this ,选择字体颜色/将输入文字在文字显示区表示;Stri ng s = (Str ing) e.getItem();String className =;if (s.equals( Windows 显示效果)className =com.su n.java.swi ng.plaf.wi ndows.Wi ndowsLookA ndFeelelse if (s.equals(Unix 显示效果“)clas
15、sName =com.sun .java.swi ng.plaf.motif.MotifLookA ndFeelelse if (s.equals(默认显示效果)className =UIMa nager. getCrossPlatformLookA ndFeelClassName();try UIMa nager.setLookA ndFeel (className);SwingUtilities.updateComponentTreeUI(this ); catch (Exception de) System. out .println(Excepti on happe ned!);pub
16、licstaticvoid mai n(Stri ng args)代码4;artFont.setDefaultCloseOperationJFrame.EXIT_ON_CLOSE );思考:(1) 如果将颜色按钮colorBtn的事件监听者改为一个为ActionListener匿名对象,即将程序中的语句 colorBtn.addActionListener(this)改成如下形式:colorBtn .addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)if (e.getSource()=
17、 colorBtn ) / 改变颜色colorStyle =JColorChooser. showDialog (this ,选择字体颜色,colorStyle );/this 换成 colorBtncolorBtn .setForeground( colorStyle );txtArea .setForeground( colorStyle ););程序可否编译正常?运行正常吗?如果不能,是什么原因?(2) 如果将程序ArtFont.java中所有的匿名监听者改为this,那么程序主要会做什么变 动?(3) 程序运行结果是java的默认显示效果,如果希望用户能控制界面的显示效果,呈现出具有U
18、NIX操作系统的显示外观和Window操作系统的默认显示效果,该如何修改程序?(二) 布局与日历【实验目的】学习使用布局类。【实验任务】编写一个应用程序,有一个窗口,该窗口为 BorderLayout 布局。窗口的中心添加一个 Panel 容器: pCenter ,pCenterd 的布局是 7 行 7 列的 GridLayout 布局, pCenter 中放置 49 个标签,用来显示日历。窗口的北面添加一个 Panel 容器 pNorth ,其布局是 FlowLayout 布 局, pNorth 放置两个按钮: nextMonth 和 previousMonth ,单击 nextMonth
19、按钮,可以显示 当前月的下一月的日历; 单击 previousMonth 按钮可以显示当前月的上一月的日历。 窗口的 南面添加一个 Panel 容器 pSouth ,其布局是 FlowLayout ,pSouth 中放置一个标签用来显示 一些信息。【 实验内容 】阅读并分析以下程序,将程序中的代码补充完整,编译并运行程序,查看结果。/CalendarBean.javaimport java.util.Calendar;public class CalendarBeanString day;int year=2005,month=0;public void setYear(int year) t
20、his.year=year;public int getYear() return year;public void setMonth(int month) this.month=month;public int getMonth() return month;public String getCalendar() String a=new String42;Calendar 日历 =Calendar.getInstance();日历 .set(year,month-1,1);int 星期几 =日历 .get(Calendar.DAY_OF_WEEK)-1;int day=0; if(mont
21、h=1|month=3|month=5|month=7|month=8|month=10|month=12) day=31;if(month=4|month=6|month=9|month=11) day=30;if(month=2) if(year%4=0)&(year%100!=0)|(year%400=0) day=29;else day=28;for(int i= 星期几 ,n=1;i 星期几 +day;i+) ai=String.valueOf(n) ; n+;return a;/CalendarFrame.javaimport java.util.*;import java.awt
22、.*;import java.awt.event.*;import java.applet.*;public class CalendarFrame extends Frame implements ActionListener Label labelDay=new Label42;Button titleName=new Button7;String name= 日,一,二, 三, 四,五,六;Button nextMonth,previousMonth;int year=2006,month=10;CalendarBean calendar;Label showMessage=new La
23、bel(,Label.CENTER); public CalendarFrame() Panel pCenter=new Panel();布局。【代码 1】 /将 pCenter 的布局设置为 7 行 7 列的 GridLayout for(int i=0;i7;i+) titleNamei=new Button(namei);【代码 2】 /pCenter 添加组件 titleNamei 。for(int i=0;i42;i+)labelDayi=new Label(,Label.CENTER);【代码 3】 /pCenter 添加组件 labelDayi 。calendar=new Cal
24、endarBean(); calendar.setYear(year);calendar.setMonth(month);String day=calendar.getCalendar();for(int i=0;i12) month=1;calendar.setMonth(month);String day=calendar.getCalendar();for(int i=0;i42;i+) labelDayi.setText(dayi);else if(e.getSource()=previousMonth) month=month-1; if(month1)month=12;calend
25、ar.setMonth(month);String day=calendar.getCalendar();for(int i=0;i42;i+) labelDayi.setText(dayi);showMessage.setText(” 日历:+calendar.getYear()+年+calendar.getMonth()+月);/CalendarMainClass.javapublic class CalendarMainClass public static void main(String args) CalendarFrame frame=new CalendarFrame();fr
26、ame.setBounds(100,100,360,300);frame.setVisible(true);frame.validate();frame.addWindowListener(new java.awt.event.WindowAdapter() public void windowClosing(java.awt.event.WindowEvent e) System.exit(0););思考: 请在 CalendarFrame 类中增加一个 TextField 文本框, 用户可以通过在文本框中输入年份来修改calender对象的int成员year。(三) 绘制彩色饼图【实验目的
27、】(1) 熟悉图形绘制方法;(2) 了解 Java2D 图形绘制的基本概念和方法;(3) 使用 Java2D 进行文字图形填充。【实验任务】某公司针对要推出的新产品向消费者进行满意度调查,调查分为 4 个等级: A满意、B 一般、C不满意、D不感兴趣。经统计参与调查的500名消费者试用 结果为选择 A 的有 60%、选择 B 的有 20%、选择 C 的有 10%、选择 D 的有 10% 绘制一个彩色饼图描述上述百分比数值。【 实验内容 】阅读并分析以下程序,将程序中的代码补充完整,编译并运行程序,查看结果。/ Piechart.javaimport java.awt.*;import java.awt.geom.*;import javax.swing.*;public class Piechart extends JFrame 代码1);public Piechart() getC on te ntPa ne().add( setTitle( 绘制饼图“);setSize(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 IEC TS 62607-11-1:2025 EN Nanomanufacturing - Key control characteristics - Part 11-1: Electromagnetic compatibility - Shielding effectiveness of nanomaterials: near-field p
- (康德卷) 重庆市2026届高三9月开学考联考化学试卷(含答案解析)
- 人教版八年级数学下册 第十九章《一次函数》单元检测卷(含答案)
- 人教版八年级数学上册 第十三章《三角形》单元检测卷(附答案)
- 人教版2025-2026学年六年级上册数学期末应用题训练二【含答案】
- 人教PEP版(一起)一年级英语上册全册教案
- 培训课件-12345安全管理机制
- 《体育1武术初级长拳第三路》课程简介与教学大纲
- CN120208390A 一种污水吸附处理设备
- CN120204573A 一种非侵入式睡眠辅助改善方法及系统
- 2025至2030中国公安行业发展趋势分析与未来投资战略咨询研究报告
- 口腔医疗风险管理实施方案
- 2025互联网营销师三级理论考核试题及答案
- 新生儿持续性肺动脉高压个案护理
- bbc国际音标教学课件
- 贵州省贵阳市2024-2025学年八年级下学期期末道德与法治试卷(含答案)
- 2025年云南临沧中考道德与法治试题及答案
- 2025至2030年中国红外热成像仪产业发展态势及投资决策建议报告
- PhotoshopCC设计与应用任务教程(第2版)全套课件
- 我给书本穿新衣教案
- 2025年普通高等学校招生全国统一考试(全国I卷英语)及答案
评论
0/150
提交评论