




已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机科学与工程学院武 汉 工 程 大 学计算机科学与工程学院实验报告4专业班级实验地点学生学号指导教师学生姓名实验时间实验项目Java界面程序设计实验类别操作性()验证性()设计性()综合性( )其它( )实验目的及要求1)了解Java.awt包及Swing的新增特性。2)了解Java系统图形用户界面的基本工作原理和界面设计的步骤。3)了解图形用户界面的事件响应机制。4)了解图形用户界面各种常用的基本组件的使用方法及其事件响应。5)掌握Java常用组件的应用6)掌握图形用户界面各种布局策略的设计与使用成 绩 评 定 表类 别评 分 标 准分值得分合 计上机表现积极出勤、遵守纪律认真完成实验任务30分报告质量程序代码规范、功能正确填写内容完整、体现收获70分说明: 评阅教师: 刘军 日 期: 2015 年 月 日一、实验目的1)了解Java.awt包及Swing的新增特性。2)了解Java系统图形用户界面的基本工作原理和界面设计的步骤。3)了解图形用户界面的事件响应机制。4)了解图形用户界面各种常用的基本组件的使用方法及其事件响应。5)掌握Java常用组件的应用6)掌握图形用户界面各种布局策略的设计与使用二、实验要求 1)创建一个简单的图形用户界面。2)使用Java类库中提供的组件,并添加到图形用户界面中。3)通过Java事件处理机制,实现与用户的交互信息。4)练习使用布局管理器5)使用Java类库中提供的组件,并添加到图形用户界面中6)通过Java事件处理机制,实现与用户的交互信息三、实验内容对一个优秀的应用程序来说,良好的图形用户界面是必不可少的。因为只有通过图形界面,用户才能够与程序友好的交互。缺少良好的图形用户界面,将会给用户理解和应用程序带来很多不便。 创建一个完整的图形用户界面的应用程序大致流程如下: 1) 引用需要的包和类。 2) 设置一个顶层的容器。 3) 根据需要为容器设置布局管理器或使用默认布局管理器。 4) 将组件添加到容器内,位置自行设计。 5)为响应事件的组件编写事件处理代码。 下面我们先建立一个简单的图形用户界面,然后通过合适的布局管理器,将各种常用组件添加到图形用户界面中,实现与用户的交互信息。 1. 创建简单的图形用户界面 (1)创建简单的 Frame 框架在 AWT 库中,对应于框架的类是 Frame,在 Swing 库中,相应的类是 JFrame。JFrame 类扩展了 Frame 类。大部分 ATWT 组件在 Swing 中都有等价的组件,它们在表示形式上差一个“J”。框架是一个容器,可以在这个容器中放入其他一些图形用户界面组件,如按钮、菜单等,从而组成一个功能完善的程序。 下面的例子是建立一个 Frame 框架,通过这个例子学习如何创建一个简单的图形用户界面。例 4-1 下面的例子是建立一个 Frame 框架,并能够打开一个文件打开窗体。请分析程序,并根据注释填空,实现窗体功能。import javax.swing.*; import java.awt.*; import java.awt.event.*;public class FirstFrame extends JFrame implements ActionListenerJButton but=new JButton(打开文件窗体);public FirstFrame(String str)super(str); (1) /设置窗体的大小 this.setLocation(100,100); (2) /添加按钮 (3) /增加按钮监听 this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); public void actionPerformed(ActionEvent e) FileDialog fd = new FileDialog(this, FileDialog); (4) /显示文件打开窗体 public static void main(String args) FirstFrame mf=new FirstFrame(这是个窗体); - 根据注释填空:(1) setSize(400,300);(2) add(but);(3) but.addActionListener(this);(4) fd.setVisible(true);运行截图:点击按钮前:点击按钮后:2向图形用户界面中添加组件,实现交互信息利用各种组件及 Java 事件的处理机制才能准确地处理用户的交互信息,完成用户的各种操作。 例 4-2 编写一个窗体,其功能为:在窗口上摆放两个标签。构造第一个标签时,令其上面的文本信息为“我将参加 Java 程序设计考试。”,将第二个标签构造为空标签。程序将第一个标签的信息复制到第二个标签上,并增加信息“希望自己考取好成绩。”。要求第一个标签以红色为背景,绿色为前景;第二个标签以绿色为背景,蓝色为前景。请根据注释填空,实现该窗体的功能。 import java.awt.*; import javax.swing.*; class LabelFrame extends JFrameJLabel p1=new JLabel(我将参加 Java 程序设计考试。); (1) /声明创建第二个标签 p2 public LabelFrame( ) /设置窗体的布局 setLayout(new FlowLayout(); p1.setOpaque(true);/设置标签可透明 p2.setOpaque(true); (2) /添加第一个标签 (3) /添加第二个标签 /将第一个标签的信息复制到第二个标签上,并增加信息“希望自己考取好成绩”。 (4) p1.setBackground(Color. red); (5) /设置第一个标签的前景颜色 (6) /设置第二个标签的背景颜色 p2.setForeground(Color.blue); public static void main(String args) LabelFrame myFrame = new LabelFrame();myFrame.setTitle(标签窗体);myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);myFrame.setSize(250,250); (7) /设置窗体的可见性 根据注释填空:(1) JLabel p2=new JLabel();(2) add(p1);(3) add(p2);(4) p2.setText(p1.getText()+,希望自己取得好成绩。);(5) p1.setForeground(Color.green);(6) p2.setBackground(Color.green);(7) myFrame.setVisible(true);运行截图:注意:从例 4-2 可以看出,设置背景颜色程序使用语句: setBackground(Color.red);设置前景颜色程序使用语句:setForeground(Color.red); 因为Java中控件默认下是不透明的,因此如果想显示背景颜色,我们需要添加语句 p1.setOpaque(true);来设置标签可透明。 例 4-3 编写一个窗体,包括一个用于给出提示信息的标签和两个文本框,其中,一个输入文本框用于获取用户给出的一个整数,求该数的平方后将计算结果置在另一个输出文本框中输出。请根据注释将程序补充完整,并执行成功。(注意:数值型数据与字符串之间的相互转换) import java.awt.*; import javax.swing.*; import java.awt.event.*; class ComputeFrame extends JFrame implements ActionListener /声明控件 (1) public ComputeFrame ( ) /创建控件 (2) setLayout(new FlowLayout(); /添加控件 (3) /为输入文本框增加监听 (4) public void actionPerformed(ActionEvent evt) /求输入数字的平方后将计算结果置在另一个输出文本框中输出。 (5) public static void main(String args)ComputeFrame myFrame = new ComputeFrame ();myFrame.setTitle(Show);myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); myFrame.setSize(250,250); myFrame.setVisible(true); 根据注释将程序补充完整:(1) JLabel l;JTextField num1,num2;(2) l=new JLabel(的平方等于:);num1=new JTextField(5);num2=new JTextField(7);(3) add(num1);add(l);add(num2);(4) num1.addActionListener(this);(5) int n1=Integer.parseInt(num1.getText();num2.setText(+(n1*n1);试运行截图:3利用布局管理器布局用户界面组件 为了使图形用户界面具有良好的平台无关性,提供了专门用来管理组件在容器中的布局的工具。Java 将容器内的所有组件安排给一个“布局管理器”负责管理,如:排列顺序,组件的大小、位置等。我们应学会选择不同的布局管理器来决定容器内组件的布局。(1)使用面板默认的 FlowLayout 布局管理器 FlowLayout 布局管理器的特点是在一行上水平排列组件,直到该行上没有足够的空间,这时另起一行,并默认为居中显示。 例 4-4 下面的例子是通过 FlowLayout 布局管理器来排列多个按钮,请根据注释填空,实现例子功能。import java.awt.*;import java.awt.event.*; import javax.swing.*; public class FlowLayoutTestpublic static void main(Stringargs)int buttonNumber=10;ButtonFrame frame=new ButtonFrame(buttonNumber); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.show(); class ButtonFrame extends JFrame public ButtonFrame(int buttonNumber)buttons=buttonNumber;setTitle(FlowLayoutTest);setSize(WIDTH,HEIGHT);JPanel buttonPanel=new JPanel(); /设置窗体布局 (1) /增加相应的按钮 for(int i=0; ibuttons;i+) JButton addButton=new JButton(add+i); /添加按钮 (2) public static final int WIDTH=350; public static final int HEIGHT=200; private int buttons; 根据注释填空:(1) add(buttonPanel);buttonPanel.setLayout(new FlowLayout(FlowLayout.CENTER,20,40);(2) buttonPanel.add(addButton);试运行截图:(2)使用 BorderLayout 布局管理器边界布局可以将组件置于容器的中部、南部、北部、东部和西部。 例 4-4 例子应用 BorderLayout 布局管理器形成窗体,请执行程序,解释画线语句的功能。import java.awt.*;import java.awt.event.*;import javax.swing.*; public class BorderLayoutTestpublic static void main(Stringargs)BorderFrame frame=new BorderFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.show();class BorderFrame extends JFrame public BorderFrame() setTitle(BorderLayoutTest); setSize(WIDTH,HEIGHT); /建立容纳按钮的面板JPanel buttonPanel=new JPanel(); /增加相应的按钮for (int i=0;i3;i+)JButton addButton=new JButton(add+i); buttonPanel.add(addButton); JPanel textPanel=new JPanel(); /(1) /增加相应的文本框for(int i=0;i2;i+)JTextField addText=new JTextField(add+i,10);textPanel.add(addText); /(2) Container contentPane=getContentPane(); /(3) contentPane.add(buttonPanel,BorderLayout.SOUTH); /(4) contentPane.add(textPanel,BorderLayout.NORTH); /(5) public static final int WIDTH=350; public static final int HEIGHT=150; 解释画线语句的功能:(1) 增加Panel面板(2) 向Panel面板里增加控件文本框(3) 获取一个容器(4) 向该容器中按照BorderLayout的规则添加两个Panel面板(3)应用常用的控件例 4-5 编写一个窗体,其功能为:在其窗口中摆放三个单选按钮,令它们的标签分别为 “选项 1”、“选项 2”、“选项 3”, 初始时,所有按钮均可见;以后,如果某个单选按钮被选中了,就通过消息对话框显示它被选中的信息(如,若点击了第二个单选按钮,则显示“你选择了“选项 2”), 并使该单选按钮自身不可见,而使其它单选按钮变为可见的。 请根据注释将程序补充完整,并调试成功。import java.awt.*;import javax.swing.*; import java.awt.event.*;class MyFrame extends JFrame implements ActionListener ButtonGroup optGroup; JRadioButton opt1,opt2,opt3;String s=; boolean b=false; public MyFrame() optGroup=new ButtonGroup( ); /创建 opt1,opt2,opt3 控件 (1) / 向 optGroup 中添加 opt1,opt2,opt3 控件 (2) this.getContentPane().setLayout(new FlowLayout();this.getContentPane().add(opt1); this.getContentPane().add(opt2); this.getContentPane().add(opt3); /为 opt1,opt2,opt3 控件添加监听 (3) public void actionPerformed(ActionEvent e) if(e.getSource()=opt1) /消息对话框显示控件被选中的信息 (4) /设置控件的可见性 (5) if(e.getSource()=opt2) /消息对话框显示控件被选中的信息 (6) /设置控件的可见性 (7) if(e.getSource()=opt3) /消息对话框显示控件被选中的信息 (8) /设置控件的可见性 (9) public static void main(String args) MyFrame myFrame = new MyFrame(); myFrame.setTitle(Show); myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);myFrame.setSize(250,250); myFrame.setVisible(true); 根据注释将程序补充完整:(1) opt1=new JRadioButton(选项1);opt2=new JRadioButton(选项2);opt3=new JRadioButton(选项3);(2) optGroup.add(opt1);optGroup.add(opt2);optGroup.add(opt3);(3) opt1.addActionListener(this);opt2.addActionListener(this);opt3.addActionListener(this);(4) s=the button opt1 has been chosen:;System.out.println(s+e.getSource();(5) setVisible(true);(6) s=the button opt2 has been chosen:;System.out.println(s+e.getSource();(7) setVisible(true);(8) s=the button opt3 has been chosen:;System.out.println(s+e.getSource();(9) setVisible(true);试运行截图:四、上机实践 此环节可以巩固读者在实验环节中所学的内容,同时积累实验环节外独立编程的经验。 1. 请编写一个窗体:定义三个文本框。其中,第一个文本框上面的文本信息为“请输入口令:”;第二个文本框为口令输入域;第三个文本框上的信息由程序设置:若口令(假设口令为字符串”MyKey”)正确,则设置为“通过!”,否则设置为“口令错!”。代码:import java.awt.*;import javax.swing.*;import java.awt.event.*;class MyFrame extends JFrame implements ActionListenerJTextField t1,t2,t3;public MyFrame()t1=new JTextField(Please input the key:,12);t2=new JTextField(10);t3=new JTextField(10);setLayout(new FlowLayout();add(t1);add(t2);add(t3);t2.addActionListener(this);pack();setVisible(true);public void actionPerformed(ActionEvent e)String temp=t2.getText();if(temp.equals(MyKey)t3.setText(通过!);elset3.setText(口令错!);public static void main(String args)MyFrame f=new MyFrame();f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);运行截图:2. 编写程序:下图中的框架采用 BorderLayout 布局,中间放置一个面板,南面放置一个按钮,当点击按钮时,面板的背景色随机变换,请编程实现该程序。 代码:import java.awt.*;import java.awt.color.*;import java.awt.event.*;import javax.swing.*;class MyFrame extends JFrame implements ActionListenerJPanel p;JButton b;public MyFrame()b=new JButton(改变颜色);p=new JPanel();setSize(250,250);setLayout(new BorderLayout();add(b,BorderLayout.SOUTH);add(p);b.addActionListener(this);setVisible(true);public void actionPerformed(ActionEvent e)p.setBackground(new Color(int)(Math.random()*256),(int)(Math.random()*256),(int)(Math.random()*256);public static void main(String args)MyFrame f=new MyFrame();f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);运行截图: 课后思考与练习 一、 选择题 1引入 java.awt 包,使用语句为: 无答案 。 Aimport java.awt.包 Bimport java.awt; Cinput java.awt 包 Dimput java.awt.*; 2Java 中可使用 setBackground(Color)设置组件的 C 。 A填充色 B前景色 C背景色 D模块色 3创建一个以 “按钮标签”为标题的 Nbut 按钮对象的方法语句为 B 。 AButton Nbut=new Button(); BButton Nbut=new Button(“按钮标签”); CButton Nbut=create Button(“按钮标签”); DButton Nbut=new Button(按钮标签); 4点击按钮可以产生 ActionEvent 事件,实现 D 接口可处理此事件。 AFocusListener BComponentListener CWindowListener DActionListener 二、 编程题 1. 编写程序产生一个窗体, 其中包含两个按钮 b1、b2,初始时 b1 的前景为兰色,b2 的前景为红色,它们的标签分别为”兰按钮”、”红按钮”。无论哪个按钮被点击,都将该按钮上的标记改为“已按过”,并使该按钮变灰。代码:import java.awt.*;import java.awt.event.*;import javax.swing.*;class MyFrame extends JFrame implements ActionListenerJButton b1,b2;public MyFrame()JFrame MyFrame=new JFrame();b1=new JButton(兰按钮);b2=new JButton(红按钮);setLayout(new FlowLayout();b1.setForeground(Color.BLUE);b2.setForeground(Color.RED);b1.setVisible(true);b1.setVisible(true);add(b1);add(b2);MyFrame.setLayout(new FlowLayout();b1.addActionListener(this);b2.addActionListener(this);MyFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);public void actionPerformed(ActionEvent e) if(e.getSource()=b1)b1.setForeground(Color.GRAY);b1.setText(已按过);if(e.getSource()=b2)b2.setForeground(Color.GRAY);b2.setText(已按过);public static void main(String args)MyFrame b=new MyFrame();b.setTitle(ButtonTest);b.pack();b.setVisible(true);运行截图: 2. .(提高题目)下面程序是使用文本区和滚动条技术相结合显示一段字符串,程序输出结果如下图所示,请分析程序并解释画线语句的功能。 import java.awt.*;import javax.swing.*; public class TextAreaDemo extends JFrame private DescriptionPanel descriptionPanel = new DescriptionPanel(); public static void main(String args) TextAreaDemo frame = new TextAreaDemo(); frame.pack(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setTitle(Text Area Demo); frame.setVisible(true); public TextAreaDemo() String description = Task scheduling is of great significance to + shorten performing time and minimize the cost for computational + Grid. A grid task schedule algorithm is presented in this paper, + which is based on a constraint satisfaction neural network. The + constraint satisfaction means to remove the violations for sequence+ and resource constraints during scheduling subtasks for grid + environment. The data-transferring costs among subtasks are also+ considered in our task scheduling. The simulation in this paper+ has shown that the task schedule algorithm is efficient with respect+ to the quality of solutions and the solving speed. ; descriptionPanel.setTextDescription(description); getContentPane().setLayout(new BorderLayout(); getContentPane().add(descriptionPanel, BorderLayout.CENTER); class DescriptionPanel extends JPanel private JTextArea jtaTextDescription/(1) public DescriptionPanel() JScrollPane scrollPane = new JScrollPane(jtaTextDescription = new JTextArea(); /(2) jtaTextDescription.setFont(new Font(Serif, Font.PLAIN, 14); /(3) jtaTextDescription.setLineWrap(true); jtaTextDescription.setWrapStyleWord(true); scrollPane.setPreferredSize(new Dimension(200, 100);setLayout(new BorderLayout();add(scrollPane, BorderLayout.CENTER); public void setTextDescription(String text) jtaTextDescription.setText(text); /(4) 解释画线语句的功能;(1) 增加文本显示区域控件(2) 增加可滚动的文本框(3) 设置文本字体和字号(4) 填充文本3. 下面的程序实现了一个简单的计算器,请调试正确执行程序,并解释画线语句的功能。import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Calculator extends JFrame implements ActionListenerprivate JButton num=new JButton10;private JButton op=new JButton4;private JButton b1=new JButton(1);private JButton b2=new JButton(2);private JButton b3=new JButton(3);private JButton b4=new JButton(4);private JButton b5=new JButton(5);private JButton b6=new JButton(6);private JButton b7=new JButton(7);private JButton b8=new JButton(8);private JButton b9=new JButton(9);private JButton b0=new JButton(0);private JButton clear=new JButton(C);private JButton equal=new JButton(=);private JButton add=new JButton(+);private JButton sub=new JButton(-);private JButton mul=new JButton(*);private JButton div=new JButton(/);private JTextField tf=new JTextField();int oper,result;public Calculator()for(int i=0;i10;i+)numi=new JButton(+i); / (1)op0=new JButton(+);op1=new JButton(-);op2=new JButton(*);op3=new JButton(/);JPanel p=new JPanel();p.setLayout(new GridLayout(4,4); / (2)int i;for(i=1;i=3;i+)p.add(numi);p.add(op0);for(;i=6;i+)p.add(numi); / (3)p.add(op1); /(4)for(;i=9;i+)p.add(numi);p.add(op2);p.add(num0);p.add(clear);p.add(equal);p.add(op3);getContentPane().add(p,BorderLayout.CENTER); /(5)getContentPane().add(tf,BorderLayout.NORTH);for(int j=0;j10;j+)numj.addActionListener(this); /(6)for(int j=0;j4;j+)opj.addActionListener(this);clear.addActionListener(this);equal.addActionListener(this);public void actionPerformed(ActionEvent e)String input=e.getActionCommand();switch(input.charAt(0)case 0:tf.setText(0);oper=0; break;case 1:tf.s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 终端客户满意度绩效合同
- 泄爆墙设计与施工技术方案范文
- 老人与海读后感及教学设计方案
- 商品混凝土合作合同(标准版)
- 临时公棚合同(标准版)
- 医院急救流程与应急方案解析
- 小微企业税务筹划方案简介
- 智慧农业示范区建设实施方案
- 新媒体时代下的内容营销策略研究与实践
- 电力工程项目建设施工协议
- 《政治经济学》(全套课件)
- 武汉理工大学计算机科学与技术学院课程教学大纲
- 应急疏散培训试题
- 开学安保工作方案(6篇)
- QC080000-2017 HSF有害物质管理程序文件全套
- 计量操作人员(通用类)考试题库(含答案)
- 大海(张雨生)原版五线谱钢琴谱正谱乐谱
- 公开课第一课素描基础入门课件
- 数据结构ppt课件完整版
- 铝模板施工工艺标准
- 采购与供应管理(二)教案
评论
0/150
提交评论