单元4_任务一 油耗计算程序设计._第1页
单元4_任务一 油耗计算程序设计._第2页
单元4_任务一 油耗计算程序设计._第3页
单元4_任务一 油耗计算程序设计._第4页
单元4_任务一 油耗计算程序设计._第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、任务一 油耗计算程序设计,单元四:图形用户界面程序设计,教学目标,知识目标 Java GUI 编程 工具包 AWT 工具包 SWING JLabel、JTextField、JButton类 按钮事件处理,能力目标 能够遵循GUI程序设计步骤设计简单的Java GUI程序 能够灵活使用基本控件 能够处理按钮点击事件,教学内容,4,任务陈述,1,2,3,知识准备,任务实施,任务拓展,任务实训,5,1. 任务陈述,任务描述 用户在制定的区域输入加油钱数,汽车跑的公里数,和汽油的价格,单击“计算”按钮,计算显示百公里油耗。计算公式为:百公里油耗(升) = 加油钱数/汽油的价格/汽车跑的公里数*100。

2、运行结果如下所示:,2. 知识准备,人机交互界面 主要功能:输入数据,输出结果 主要分类:命令行(字符)界面、图形界面 Java 图形用户界面编程 基于控件、事件处理 控件分类 AWT 组件 Swing 组件,2. 知识准备,AWT(Abstract Windowing Toolkit),中文译为抽象窗口工具包,是Java提供的用来建立和设置Java的图形用户界面的基本工具,AWT类体系结构,2. 知识准备,Java把由Component类的子类或间接子类创建的对象称为一个组件(也称为控件)。 Java把由Container的子类或间接子类创建的对象称为一个容器。 可以向容器添加组件:Cont

3、ainer类提供了一个public方法:add(Component c),一个容器可以调用这个方法将组件添加到该容器中。,2. 知识准备,Component类的方法: public add(Component c); 容器调用此方法将组件添加到自己中 removeAll();/ 移掉容器中全部组件 remove(Component c);/ 移掉容器中参数指定组件 容器嵌套:容器本身也是一个组件,因此你可以把一个容器添加到另一个容器中,这叫容器嵌套。可以通过容器嵌套实现复杂界面布局,2. 知识准备,AWT组件需要有一个相应的本地组件为它工作,称为它的同位体。AWT 把与显示组件和处理组件事件有

4、关的许多工作交给相应的本地组件,由操作系统负责完成,AWT工作原理示意图,2. 知识准备,有同位体的组件称为重量级组件,AWT组件是重量级组件,其缺点是 消耗大量资源 不同操作系统中外观会有不同,而且其功能受限于本地组件 同位体可能用非Java语言如C+实现,不能被Java扩展 如不能为AWT标签和按钮添加图像,2. 知识准备,javax.swing 包提供了更加丰富、功能强大的组件,称为 swing 组件 大部分 swing 组件没有同位体。没有同位体的组件称为轻量级组件。 轻量级组件显示和事件有关的许多处理工作是由Java类来完成,优点是占用较少资源,效率更高,显示外观与平台无关,功能更强

5、更灵活,2. 知识准备,Swing组件创建的窗口有同位体,属于重量级组件,但是Swing按钮属于轻量级组件,没有同位体,Swing工作原理示意图,2. 知识准备,Swing类的类名都以大写字母J开头。常用 Swing 类既包括重量级组件,也包括轻量级组件 重量级组件包括:JFrame、 JApplet、 JDialog 轻量级组件都是 JComponent类的子类,如JComboBox, JFileChooser, JLabel, JList, JMenuBar, JPanel, JPopupMenu, JProgressBar, JScrollBar Component是所有重量组件的父类。

6、JComponent 类是所有轻量组件的父类。JComponent 类是java.awt包中容器Container的子类,因此所有轻量组件也都是容器,2. 知识准备,JFrame类是java.awt.Frame 的子类,JFrame类及其子类创建的对象是Swing窗体,是重量级容器 不可以把组件直接添加到Swing窗体中,Swing窗体含有一个称为内容面板的容器,应当把组件添加到内容面板中 在Swing窗体的内容面板中应当只使用轻量组件 Swing窗体通过调用public Container getContentPane() 方法得到它的内容面板,2. 知识准备,任务中相关代码 Contain

7、er con = getContentPane(); con.setLayout(new FlowLayout(); con.add(new JLabel(上次加油钱数(元);,3. 任务实施,实施思路与方案 可以定义一个油耗计算器窗口类,继承自窗体类JFrame,并实现ActionListener接口 窗口中通过JTextField类添加三个文本条,通过JButton类添加计算按钮,通过JLabel类添加标签显示计算结果 通过实现ActionListener接口的actionPerformed方法响应用户点击按钮的操作,3. 任务实施,解决步骤 设计油耗计算器窗口 定义油耗计算器窗口类的构造

8、方法 定义actionPerformed单击动作处理方法 定义main主方法,创建对象进行测试,3. 任务实施,代码结构 import java.awt.event.*; import javax.swing.*; import java.awt.*; public class GasConsumption extends JFrame implements ActionListener JTextField usedMoney; / 上次加油钱数 JTextField runKm; / 汽车跑的公里数 JTextField gasPrice;/ 汽油的价格 JLabelgasConsumpt

9、ion; JButton calculate; public GasConsumption() / 构造方法 / 实现动作监听器接口中的方法actionPerformed public void actionPerformed(ActionEvent e) public static void main(String args) new GasConsumption(); ,3. 任务实施,构造方法代码 public GasConsumption() Container con = getContentPane(); con.setLayout(new FlowLayout(); con.ad

10、d(new JLabel(上次加油钱数(元); usedMoney = new JTextField(200); con.add(usedMoney); con.add(new JLabel(汽车跑的公里数); runKm = new JTextField(500); con.add(runKm);,3. 任务实施,构造方法代码 public GasConsumption() con.add(new JLabel(汽油的价格(元); gasPrice = new JTextField(7.5); con.add(gasPrice); calculate = new JButton(计算); c

11、on.add(calculate); calculate.addActionListener(this); gasConsumption = new JLabel(); con.add(gasConsumption);,3. 任务实施,构造方法代码 public GasConsumption() / 设置窗体的标题、大小、可见性及关闭动作 setTitle(油耗计算器); setSize(340, 260); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ,3. 任务实施,实现动作监听器接口中的方法 publ

12、ic void actionPerformed(ActionEvent e) / 对于初学者,此部分编码可省略。后续任务详解 float fMoney = Float.parseFloat(usedMoney.getText(); float fKm = Float.parseFloat(runKm.getText(); float fPrice = Float.parseFloat(gasPrice.getText(); float fGas = fMoney/fPrice/fKm*100; gasConsumption.setText(百公里油耗(升): +fGas); ,3. 任务实施,

13、main方法 public static void main(String args) new GasConsumption(); ,4. 任务拓展,JApplet对象也是一个重量级容器,用来建立Java小应用程序 public class Example4_3 extends JApplet public void init() JButton btn = new JButton(确定); JTextArea txt = new JTextArea(); Container con = getContentPane(); con.add(txt, BorderLayout.CENTER);

14、con.add(btn, BorderLayout.WEST); ,4. 任务拓展,JDialog 类及其子类创建的对象也是重量容器,用于创建对话框 JFrame、JApplet、JDialog是Swing的底层容器,都是重量容器。不能把组件直接添加到底层容器中,而应当添加到它们的内容面板中;也不能为底层容器设置布局,而应当为它们的内容面板设置布局。内容面板的默认布局是BorderLayout布局。,4. 任务拓展,虽然轻组件都是容器,但仍有一些比其他轻组件更经常用来添加组件的轻容器,相对于底层重量容器而言,我们习惯上称这些轻容器为中间容器 如面板 JPanel、滚动窗口 JScrollPane、拆分窗口 JSplitPane、内部窗体 JInternalFrame 等,4. 任务拓展,JPanel作为画板使用【例4-4】,4. 任务拓展,JScrollPane演示【例4-5】,4. 任务拓展,JSplitPane拆分窗

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论