Java语言程序设计基础教程课件(第12章)

合集下载

Java 2实用教程课件(第3版第12章)

Java 2实用教程课件(第3版第12章)

Applet 和 Application比较
☺ Java Applet(小应用程序):不是一 Applet(小应用程序): ):不是一 个完整的应用程序, 个完整的应用程序,而是框架程序中的一 个模块,所以只能在WWW 个模块,所以只能在WWW 浏览器环境 下运行。 下运行。 ☺ Java Application(Java应用程序): Application(Java应用程序 应用程序): 是一个完整的应用程序,可以独立地运行。 是一个完整的应用程序,可以独立地运行。
第十二章
Applet程序 Applet
一、Applet简介 简介
Applet程序继承自java.applet.Applet类, 嵌入HTML文档中,通常置于服务器端,下载 到本地机后,通过浏览器在用户端执行。 Applet类提供了applet程序与所执行环 境间的标准接口,同时还提供了applet程序 在浏览器上执行的架构,包括init(),start(), stop()和destroy()四个方法。
<HTML> <APPLET CODE="applet 程 序 名 .class" WIDTH= 窗 口 宽 度 HEIGHT=窗口高度> </APPLET> </HTML>

applet程序的运行
在Netscape Navigator浏览器上可以直接访问内嵌 有applet程序的网页,但在IE浏览器中还不能直接访 问,必须给网页再添加一些标记成分,使IE能识别和 执行网页中的applet程序。 除 了 使 用 浏 览 器 外 , SUN 还 提 供 了 应 用 程 序 appletviewer.exe,专用于执行嵌有applet程序的 网页。用appletviewer运行嵌有applet程序网页的 命令为: appletviewer 网页文件名.html

Java程序设计案例教程课件第12章

Java程序设计案例教程课件第12章
▪ 由于某种原因,线程不能执行,即使CPU是空闲的。线程阻塞解除后,线程进入 可运行状态,再次等待调度,以获得CPU时间。进入阻塞状态的原因有:
❖ 结束状态(Terminated)
▪ 线程正常执行完成(从run()方法中返回)或线程被中止。这时释放线程占用的资 源,结束线程的执行。
Java程序设计案例教程
class MyThread extends Thread{ public void run(){ //线程体 }
}
▪ 创建一个该类的实例。
MyThread t = new MyThread();
▪ 启动该实例。
t.start();
Java程序设计案例教程
幻灯片 4,共14页
4
多线程的实现——继承Thread类
for (int i=0;i<3;i++){
System.out.println(threadName+"第"+(i+1)+"次调用");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
} else { System.out.println("票已经卖完!");
}
}
public void sellTicket() {
synchronized (this) {
if (ticketCount > 0) { System.out.println(Thread.currentThread().getName() + "正在卖第" + (10 - ticketCount + 1) + "张票," + "还剩" + (--ticketCount) + "张票");

第12章(74)教材配套课件

第12章(74)教材配套课件
组件技术具有可以重复使用、易于替换和升级、可以加 快软件的开发速度和缩短软件开发周期的特点。
第12章 JavaBean及其应用
JavaBean就是Java的组件模型。常见的还有COM组件技 术,它是Microsoft提出的一种组件模型;还有DCOM和 CORBA,是在分布式应用上常见的组件模型。
组件分为可视化组件和非可视化组件,可视化组件具有 可视的功能,如在VB或Delphi等开发工具中使用的按钮、文 本输入框等组件。非可视化组件在后台工作,不可视,如VB 或Delphi使用的定时器,它就是一种非可视化组件。
JavaBean API官方文档中有这样的定义:“JavaBean是 在开发工具上可视化操作的、可重用的软件组件 (A JavaBean is a reusable software component that can be manipulated visually in a builder tool)。”
第12章 JavaBean及其应用
12.5 JavaBean与数据库
下面以数据库访问为例来说明JavaBean的使用。 在db.java源文件中,定义了连接数据库、关闭数据库连 接和运行查询的方法。在emp.java中emp类继承db类,并实施 了具体的查询,并将结果以getXXX()的方式返回,便于其他 应用程序获取。在TestBean.java中,创建emp的对象,并通过 输入的empno的值,传递给Bean中的查询方法实施查询,查 询后的结果以对象的getXXX()方法获取,并输出显示。运行 结果见图12-2。
● 限制属性:能够在属性值被修改的时候给其他对象发 送通知,注册成限制属性的侦听器的对象,其属性值可以拒 绝修改,一般采用addVetoableChangeListener()和 removeVetoableChangeListener()方法来注册和取消注册。

Java语言程序设计_第十二章

Java语言程序设计_第十二章

15
布局管理器

用户界面上的屏幕组件可以按照一定的格式布局。 Java语言提供了布局管理器(LayoutManager) 这个工具来管理组件在容器中的布局。
– –

每个容器都提供一个方法setLayout(LayoutManager mgr) , 用来指定要被使用的布局管理器。 布局管理器是一组类,它实现 youtManager接口。 常用的布局管理器,包括BorderLayout(边界布局)、 FlowLayout(流布局)、GridLayout(网格布局)和 GridBagLayout(网袋布局)。
}
} …… }
在定义监听器类时就可以继承事件适配器类, private void initialize() { } this.setSize(300, 200); 并只重写所需要的方法。 public this.setTitle(" void windowClosing(WindowEvent 第一个Swing实例"); e) { System.out.println("窗口正在关闭"); this.centerShow(); } //注册监听器
9
事件处理实例——实现监听器接口方式
public HelloWorldFrm extends JFrame { class 窗口事件 …… //创建实现WindowListener接口的监听器内部类 class WindowEventListener implements WindowListener { public void windowOpened(WindowEvent e) { System.out.println("窗口被打开"); } private void initialize() { public this.setSize(300, void windowClosing(WindowEvent e) { 200); System.out.println(" 窗口关闭 "); this.setTitle(" 第一个Swing 实例 "); } this.centerShow(); …… //实现 WindowListener监听器其它方法 //注册监听器 } this.addWindowListener(new WindowEventListener()); …… } }

java语言程序设计-基础篇--原书第八版--课件-PPT(第十二章)

java语言程序设计-基础篇--原书第八版--课件-PPT(第十二章)
Label
Text Check Radio
field Box
Button
Button
// Create a text field with text "Type Name Here" JTextField jtfName = new JTextField("Type Name Here");
// Create a check box with text bold JCheckBox jchkBold = new JCheckBox("Bold");
Applet
JApplet
Window
Frame Dialog
JFrame JDialog
JComponent
Swing Components in the javax.swing package
Lightweight
6
Container Classes
Object
Dimension Font
LayoutManager 1
JComponent
JPanel
Swing Components in the javax.swing package
Lightweight
8
JComponent
Swing GUI Components
JC heckBo xM e nuIte m
AbstractButton
JM enuIte m JButton JToggleButton
// Create a radio button with text red JRadioButton jrbRed = new JRadioButton("Red");

Java SE课件:12

Java SE课件:12
Label t; int k=1200; Timer timer;
MyTimer(){ this.setLayout(null); this.setBounds(200, 200, 300, 100); t=new Label(); t.setBounds(50, 50, 100, 30);
}
}
import java.awt.*; import java.awt.event.*;
类的子类的对象
Public class Test{ public void static main(String[] args){ MyThread mt=new MyThread(); }
} class MyThread extends Thread{
}
线程
2.运行:
一个Thread类的子类需要重写run()方法,而run() 方法中的内容, 就是线程运行时执行的程序。执行线程的start方法,则线程开始运行。
Label t; int k=1200; Timer timer; MyTimer(){
this.setLayout(null); this.setBounds(200, 200, 300, 100);
}
}
import java.awt.*; import java.awt.event.*;
public class MyTimer extends Frame implements ActionListener {
启动线程的程序如下:看看会有什么效果
public class Example { public static void main(String[] args) { Visit v=new Visit(); Thread a=new Thread(v);Thread b=new Thread(v);Thread c=new Thread(v); Thread d=new Thread(v);Thread e=new Thread(v); a.start();b.start();c.start();d.start();e.start(); try {

JAVA第11、12章

JAVA第11、12章
Ver. 1.0
第 11 章
幻灯片5。共26张
Java 编程语言—11课/12课
侦听器示例(续)
事件侦听器的代码如同: import java.awt.event.*; public class ButtonHandler implements ActionListener { public void actionPerformed(ActionEvent e) { System.out.println("Action occurred"); System.out.println("Button’s command is: "+ e.getActionCommand()); } }
Ver. 1.0
第 11 章
幻灯片4。共26张
Java 编程语言—11课/12课
侦听器示例
教材11-5页:
此代码段显示一个简单的框架,其中有一个按钮,其类名是 TestButton: public TestButton() { f = new Frame("Test"); b = new Button("Press Me!"); b.setActionCommand("ButtonPressed"); } public void launchFrame() { b.addActionListener(new ButtonHandler()); f.add(b,BorderLayout.CENTER); f.pack(); f.setVisible(true); }
Ver. 1.0
第 11 章
幻灯片9。共26张
Java 编程语言—11课/12课
侦听器(续)

java 第八版 中文版课件 第十二章

java  第八版  中文版课件 第十二章

–catch捕获异常是从上到下匹配的,而且catch只能捕获一次 捕获后处理完就不再调用其他的catch子句,而执行catch后 的代码
–在catch捕获异常时,是允许catch捕获多个异常子类,也允 许捕获父类异常来代替多个捕获子类异常
–允许同时捕获父子类异常。同时捕获父子类异常时,则必 须将子类异常放在父类异常的前面,否则会编译出错.
• 如何进行自定义异常: 写一个类继承异常父类 • 异常类的继承和普通类相同。 • T12ThrowExceptions.java • 展示:
– 自定义异常 – 申明异常 – 抛出异常 – 异常传递/异常链 – 异常捕获与处理
带异常方法的覆盖:总则
• 抛异常方法的覆盖要求子类抛出的异常范围不能比父类抛异 常的范围宽 – 父类抛什么,子类抛什么 – 允许父类抛,子类不抛 – 允许父类抛的多,子类抛的少 – 不允许父类不抛,子类抛 – 不允许子类抛一个父类没有抛的异常
Socket、JDBC连接之类的资源,即使遇到了异常,也 要在finally正确释放占用的资源。
–不要把大量的代码放入单个try块,然后再在catch语句 中声明Exception。而要分离各个可能出现异常的段落并 分别捕获其异常。以方便分析程序抛出异常的原因。
Java的自定义异常
• 自定义异常: 自己定义的异常类,而非java中的异常 类
– finally块中的代码一般都写释放资源的代码,因为无论是 否正常执行,都要释放资源。
• 举例:T12TryCatchFlows.java • 展示:
–try-catch-finally的异常处理顺序(输入不同数目的变元 同类型组合,观测结果)
– Try块中有return时的要求 – 父子异常类catch顺序 • 使用: – java T12TryCatchFlows 非零整数1 非零整数2 – java T12TryCatchFlows 非零整数1 零整数2 – java T12TryCatchFlows 非整数1 非整数2 – java T12TryCatchFlows 非零整数1
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第12章
常见数据结构的Java实现
链表的基本操作 栈 树集 树映射 散列表 散列集 向量
12.1链表
线性表是最基本、最简单、也是最常用的一种数据结构。 线性表中数据元素之间的关系是一对一的关系,即除了 第一个和最后一个数据元素之外,其它数据元素都是首 尾相接的。线性表的逻辑结构简单,便于实现和操作。 因此,线性表这种数据结构在实际应用中是广泛采用的 一种数据结构。 线性表的逻辑结构是n个数据元素的有限序列: (a1, a2 ,a3,…an) n为线性表的长度(n≥0),n=0的表称为空表。
程序运行结果如下所示:
12.1.2 LinkedList类中的常用方法 类中的常用方法
LinkedList的常用方法包括: public boolean add(Object element) //向链表末尾添加一个新的节点, 该节点中的数据是参数element指定的对象。 public void add(int index, Object element ) //向链表指定位置添加节 点,该节点中的数据是参数element指定的对象。 public void addFirst(Object element) //向链表头添加新节点,该节点 中的数据是参数element指定的对象。 public void addLast(Object element) //向链表尾添加新节点,该节点 中的数据是参数element指定的对象。 public Object removeFirst() //删除第一个节点,并返回这个节点中的 对象。 public Object removeLast() //删除最后一个节点,并返回这个节点中 的对象。
使用Iterator接口遍历链表: 接口遍历链表: 使用 接口遍历链表
一个链表对象可以使用iterator()方法获取 Iterator变量, Iterator对象中每个数据成员刚 好是链表节点中的数据,而且这些数据成员是 按顺序存放在Iterator对象中的, Iterator对象 使用next()方法可以得到其中的数据成员。 在例子12-1和例子12-2中我们借助get方法实 现了遍历链表。我们可以借助Iterator对象实现 遍历链表,一个链表对象可以使用iterator()方 法获取一个Iterator对象,后者使用next()方法 遍历链表。在下面的例子12-3中,我们把学生 的成绩存放在一个链表中,并实现了遍历链表。
12.2.1栈的常用方法
使用java.util包中的Stack类创建一个堆栈对象,堆栈对 象可以使用以下方法: public Object push(Object data) //输入数据,实现压栈 操作 public Object pop() //输出数据,实现弹栈操作 public boolean empty() //测试堆栈是否为空。如果空, 返回true,否则返回false public object peek() //查看堆栈顶端的数据,但不删除 该数据。 public int search(Object data) //返回对象在栈中的位置, 最顶端的位置是1,向下依次增加,如果堆栈不含此数 据,则返回-1。
for (int i = 0; i < number; i++) { String temp = (String) list.get(i); System.out.println("第" + i + "节点中的数据:" + temp); } list.remove(0); list.remove(1); list.set(0, "open"); number = list.size(); System.out.println("现在链表中有" + number + "个节点:"); for (int i = 0; i < number; i++) { String temp = (String) list.get(i); System.out.println("第" + i + "节点中的数据:" + temp); } } }
程序运行后的效果如下所示:
12.2 栈
栈(Stack)也是一种特殊的线性表,是限定 仅在表尾进行插入和删除运算的线性表,是一 种后进先出(LIFO)的数据结构。只能在一 端进行输入或输出数据的操作,堆栈把第一个 放入该堆栈的数据放在最底下,而把后续放入 的数据放在已有数据的顶上,表尾称为栈顶 (top),表头称为栈底(bottom)。栈的物 理存储可以用顺序存储结构,也可以用链式存 储结构。向堆栈中输入数据的操作称为“压 栈”,从栈中输出数据的操作称为“弹栈”。
public Object remove (int index) //删除指定位置的节点 public Object get (int index) //得到指定位置的节点 public Object getFirst() //得到链表第一个节点的对象。 public Object getLast() //得到链表最后一个节点的对象。 int indexOf(Object element):返回节点对象element在链表中首次 出现的位置,如果链表中无此节点对象则返回-1。 public int lastIndexOf(Object element):返回节点对象element在 链表中最后出现的位置,如果链表中无此节点对象则返回-1。 public Object set(int index,Object element) //将当前链表index位 置节点中的对象替换成参数element指定的对象,返回被替换对象。 public int size( ) //返回量表的ቤተ መጻሕፍቲ ባይዱ度,即节点的个数。 public boolean contains(Object element):判断链表节点对象中是 否含有element。
【例12-1】本例构造一个含有4个节点的链表,并输出节点 中的数据。
import java.util.*; public class LinkListOne { public static void main(String args[]) { LinkedList mylist = new LinkedList(); mylist.add("It");// 链表中的第一个节点。 mylist.add("is");// 链表中的第二个节点。 mylist.add("a");// 链表中的第三个节点。 mylist.add("door");// 链表中的第四个节点。 int number = mylist.size();// 获取链表的长度。 for (int i = 0; i < number; i++) { String temp = (String) mylist.get(i); System.out.println("第" + i + "节点中的数据:" + temp); } } }
【例12-3】这个例子中,把学生的成绩存放在一个链表中, 并实现了遍历链表。
import java.util.*; class Student { String name; int number; float score; Student(String name, int number, float score) { = name; this.number = number; this.score = score; } }
【例12-2】本例包含了 】本例包含了LinkedList类 类 中的一些常用方法。 中的一些常用方法。
import java.util.*; public class ep12_2 { public static void main(String args[]) { LinkedList list = new LinkedList(); list.add("is"); list.add("a"); int number = list.size(); System.out.println("现在链表中有" + number + "个节点:"); for (int i = 0; i < number; i++) { String temp = (String) list.get(i); System.out.println("第" + i + "节点中的数据:" + temp); } list.add(0, "It"); number = list.size(); list.add(number - 1, "door"); number = list.size(); System.out.println("现在链表中有" + number + "个节点:");
public class LinkListThree { public static void main(String args[]) { LinkedList mylist = new LinkedList(); Student stu_1 = new Student("赵好民", 9012, 80.0f), stu_2 = new Student( "钱小青", 9013, 90.0f), stu_3 = new Student("孙 力枚", 9014, 78.0f), stu_4 = new Student( "周左右", 9015, 55.0f); mylist.add(stu_1); mylist.add(stu_2); mylist.add(stu_3); mylist.add(stu_4); Iterator iter = mylist.iterator(); while (iter.hasNext()) { Student te = (Student) iter.next(); System.out.println( + " " + te.number + " " + te.score); } } }
相关文档
最新文档