自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(256)
  • 收藏
  • 关注

原创 10.菜单

有两种类型的菜单:下拉式菜单和弹出式菜单。本章只讨论下拉式菜单编程方法。菜单与JComboBox和JCheckBox不同,它们在界面中是一直可见的。菜单与JComboBox的相同之处是每次只可选择一个项目。在下拉式菜单或弹出式菜单中选择一个选项就产生一个ActionEvent事件。该事件被发送给那个选项的监视器,事件的意义由监视器解释。菜单条、菜单和菜单项下拉式菜单通过出现在菜

2014-09-02 16:39:51 1333

原创 9.列表和组合框

列表和组合框是又一类供用户选择的界面组件,用于在一组选择项目选择,组合框还可以输入新的选择。列表列表(JList)在界面中表现为列表框,是JList类或它的子类的对象。程序可以在列表框中加入多个文本选择项条目。列表事件的事件源有两种:一是鼠标双击某个选项:双击选项是动作事件,与该事件相关的接口是ActionListener,注册监视器的方法是addActionListener(

2014-09-02 16:38:37 364

原创 8.选择框和单选按钮

选择框、单选框和单选按钮都是选择组件,选择组件有两种状态,一种是选中(on),另一种是未选中(off),它们提供一种简单的 “on/off”选择功能,让用户在一组选择项目中作选择。选择框选择框(JCheckBox)的选中与否开状是一个小方框,被选中则在框中打勾。当在一个容器中有多个选择框,同时可以有多个选择框被选中,这样的选择框也称复选框。与选择框相关的接口是ItemListene

2014-09-02 13:26:11 1106

原创 7.文本框和文本区的输入输出

在GUI中,常用文本框和文本区实现数据的输入和输出。如果采用文本区输入,通常另设一个数据输入完成按钮。当数据输入结束时,点击这个按钮。事件处理程序利用getText()方法从文本区中读取字符串信息。对于采用文本框作为输入的情况,最后输入的回车符可以激发输入完成事件,通常不用另设按钮。事件处理程序可以利用单词分析器分析出一个个数,再利用字符串转换数值方法,获得输入的数值。对于输出,程序先将数值转换成

2014-09-02 13:21:36 2239

原创 6.文本框和文本区

在图形界面中,文本框和文本区是用于信息输入输出的组件。文本框文本框(JTextField)是界面中用于输入和输出一行文本的框。JTextField类用来建立文本框。与文本框相关的接口是ActionListener。文本框处理程序的基本内容有以下几个方面:声明一个文本框名。建立一个文本框对象。将文本框对象加入到某个容器。对需要控制的文本框对象注册监视器,监听文本框的输入结

2014-09-01 17:21:10 1360

原创 5.布局设计

在界面设计中,一个容器要放置许多组件,为了美观,为组件安排在容器中的位置,这就是布局设计。java.awt中定义了多种布局类,每种布局类对应一种布局的策略。常用的有以下布局类:FlowLayout,依次放置组件。BoarderLayout,将组件放置在边界上。CardLayout,将组件像扑克牌一样叠放,而每次只能显示其中一个组件。GridLayout,将显示区域按行、列划分成一个个相等的

2014-09-01 16:52:24 625

原创 4.面板

面板有两种,一种是普通面板(JPanel),另一种是滚动面板(JScrollPane)。JPanel面板是一种通用容器,JPanel的作用是实现界面的层次结构,在它上面放入一些组件,也可以在上面绘画,将放有组件和有画的JPanel再放入另一个容器里。JPanel的默认布局为FlowLayout。面板处理程序的基本内容有以下几个方面:通过继承声明JPanel类的子类,子类

2014-09-01 16:51:14 466

原创 2.框架窗口

http://www.nxtv.com.cn/jkzx/jkja/20140830/2232357.htmlhttp://www.nxtv.com.cn/jkzx/jkja/20140830/2232264.htmlhttp://www.nxtv.com.cn/jkzx/jkja/20140830/2232248.htmlhttp://www.nxtv.com.cn/jkzx/jkja

2014-08-30 18:16:56 387

原创 3.标签、按钮和按钮事件

标签和按钮也许是图形界面中最常见的两种组件,按钮又总是与激发动作事件有关。标签标签(JLabel)是最简单的Swing组件。标签对象的作用是对位于其后的界面组件作说明。可以设置标签的属性,即前景色,背景色、字体等,但不能动态地编辑标签中的文本。程序关于标签的基本内容有以下几个方面:声明一个标签名;创建一个标签对象;将标签对象加入到某个容器。JLabel类的主要构

2014-08-30 18:15:09 623

原创 1.图形界面设计基础

早先程序使用最简单的输入输出方式,用户在键盘输入数据,程序将信息输出在屏幕上。现代程序要求使用图形用户界面(Graphical User Interface,GUI),界面中有菜单、按钮等,用户通过鼠标选择菜单中的选项和点击按钮,命令程序功能模块。本章学习如何用Java语言编写GUI科学试验,如何通过GUI实现输入和输出。AWT和Swing先前用Java编写GUI程序,是使用抽象窗口工

2014-08-30 14:45:42 1051

原创 6.哈希表及其应用

哈希表也称为散列表,是用来存储群体对象的集合类结构。什么是哈希表数组和向量都可以存储对象,但对象的存储位置是随机的,也就是说对象本身与其存储位置之间没有必然的联系。当要查找一个对象时,只能以某种顺序(如顺序查找或二分查找)与各个元素进行比较,当数组或向量中的元素数量很多时,查找的效率会明显的降低。一种有效的存储方式,是不与其他元素进行比较,一次存取便能得到所需要的记录。这就需要

2014-08-30 14:43:03 236

原创 5.向量及其应用

向量(Vector)是 java.util 包提供的一个工具类,该类实现了可扩展的对象数组。向量和数组的区别向量和数组相似,都可以保存列表对象。但是数组只能保存固定大小的列表,而向量却提供了一种类似于“动态数组”的功能,向量与数组的重要区别之一就是向量的容量是可变的。向量和数组分别适用于不同的场合,一般来说,下列场合更适合于使用向量:如果需要频繁进行对象的插入和删除工作

2014-08-29 16:42:27 363

原创 4.日期和时间类

Java 的日期和时间类包含在 Java 实用程序包(java.util)中。利用日期时间类提供的方法,可以获取当前的日期和时间,创建日期和时间参数,计算和比较时间。Date 类Date 类是 Java 中的日期时间类,其构造方法为:    Date()使用当前的日期和时间初始化一个对象。    Date(long millisec)该构造方法带有一个参数,使用这个参数

2014-08-29 16:40:45 199

原创 3.Java语言包(java.lang)简介

Java语言包(java.lang)定义了Java中的大多数基本类,由Java语言自动调用,不需要显示声明。该包中包含了Object类,Object类是整个类层次结构的根结点,同时还定义了基本数据类型的类,如:String、Boolean、Byter、Short等。这些类支持数字类型的转换和字符串的操作等,下面将进行简单介绍。Math类Math类提供了常用的数学运算方法以及Math.PI和

2014-08-29 15:02:57 446

原创 2.Object类

java.lang 包中定义的 Object 类是所有 Java 类的根父类,其中定义了一些实现和支持面向对象机制的重要方法。任何 Java 对象,如果没有父类,就默认它继承了 Object 类。因此, 实际上,以前的定义是下面的简略:    public class Employee extends Object    public class Manager extends Emp

2014-08-29 14:59:15 124

原创 1.Java基础类库

Java 的类库是 Java 语言提供的已经实现的标准类的集合,是 Java 编程的 API(Application Program Interface),它可以帮助开发者方便、快捷地开发 Java 程序。这些类根据实现的功能不同,可以划分为不同的集合,每个集合组成一个包,称为类库。Java 类库中大部分都是由Sun 公司提供的,这些类库称为基础类库。Java 语言中提供了大量的类库共

2014-08-28 17:16:06 118

原创 8.文件的压缩处理

Java.util.zip 包中提供了可对文件的压缩和解压缩进行处理的类,它们继承自字节流类OutputSteam 和 InputStream。其中 GZIPOutputStream 和 ZipOutputStream 可分别把数据压缩成 GZIP 和 Zip 格式,GZIPInpputStream 和 ZipInputStream 又可将压缩的数据进行还原。将文件写入压缩文件的一般步

2014-08-28 17:15:04 126

原创 7.文件的随机读写

Java.io 包提供了 RandomAccessFile 类用于随机文件的创建和访问。使用这个类,可以跳转到文件的任意位置读写数据。程序可以在随机文件中插入数据,而不会破坏该文件的其他数据。此外,程序也可以更新或删除先前存储的数据,而不用重写整个文件。RandomAccessFile类是Object类的直接子类,包含两个主要的构造方法用来创 建RandomAccessFile 的对象,如

2014-08-28 13:18:36 762

原创 6.文件与目录管理

目录是管理文件的特殊机制,同类文件保存在同一个目录下不仅可以简化文件管理,而且还可以提高工作效率。Java 语言在 java.io 包中定义了一个 File 类专门用来管理磁盘文件和目录。每个 File 类对象表示一个磁盘文件或目录,其对象属性中包含了文件或目录的相关信息。通过调用 File 类提供的各种方法,能够创建、删除、重名名文件、判断文件的读写权限以及是否存在,设置和查询文件的最近

2014-08-28 13:17:21 255

原创 5.面向字节流的应用

文件输入输出流文件输入输出流 FileInputStream 和 FileOutputStream 负责完成对本地磁盘文件的顺序输入输出操作。【例 10-5】通过程序创建一个文件,从键盘输入字符,当遇到字符“#”时结束,在屏幕上显示该文件的所有内容(查看源代码)。运行后在程序目录建立一个名称为 ep10_5 的文件,运行结果如图 10-8 所示:图 10-8  例

2014-08-27 17:22:33 108

原创 4.面向字节的输入输出流

字节流以字节为传输单位,用来读写8位的数据,除了能够处理纯文本文件之外,还能用来处理二进制文件的数据。InputStream类和OutputStream类是所有字节流的父类。InputStream类面向字节的输入流都是InputStream类的子类,其类层次结构如图10-6所示。图10-6 InputStream的类层次结构图表 10-5 列出了 InputStre

2014-08-27 17:21:48 341

原创 3.面向字符的输出流

面向字符的输出流都是类 Writer 的子类,其类层次结构如图 10-5 所示。图10-5 Writer的类层次结构图表 10-3 列出了 Writer 的主要子类及说明。表 10-3 Writer 的主要子类类名功能说明CharArrayWriter写到字符数组的输出流BufferedWriter缓冲输出字符流

2014-08-27 13:19:53 161

原创 2.面向字符的输入流

字符流是针对字符数据的特点进行过优化的,因而提供一些面向字符的有用特性,字符流的源或目标通常是文本文件。 Reader和Writer是java.io包中所有字符流的父类。由于它们都是抽象类,所以应使用它们的子类来创建实体对象,利用对象来处理相关的读写操作。Reader和Writer的子类又可以分为两大类:一类用来从数据源读入数据或往目的地写出数据(称为节点流),另一类对数据执行某种处理(称为处理流

2014-08-27 13:18:02 268

原创 1.输入输出基本概念

输入输出(I/O)是指程序与外部设备或其他计算机进行交互的操作。几乎所有的程序都具有输入与输出操作,如从键盘上读取数据,从本地或网络上的文件读取数据或写入数据等。通过输入和输出操作可以从外界接收信息,或者是把信息传递给外界。Java把这些输入与输出操作用流来实现,通过统一的接口来表示,从而使程序设计更为简单。Java流的概念流(Stream)是指在计算机的输入输出操作中各部件之间的数据

2014-08-26 17:24:44 4018

原创 11.线程的挂起、恢复和终止

有时,线程的挂起是很有用的。例如,一个独立的线程可以用来显示当日的时间。如果用户不希望用时钟,线程被挂起。在任何情形下,挂起线程是很简单的,一旦挂起,重新启动线程也是一件简单的事。挂起,终止和恢复线程机制在Java 2和早期版本中有所不同。尽管你运用Java 2的途径编写代码,你仍需了解这些操作在早期Java环境下是如何完成的。例如,你也许需要更新或维护老的代码。你也需要了解为什么Java

2014-08-26 17:23:22 527

原创 10.线程死锁

需要避免的与多任务处理有关的特殊错误类型是死锁(deadlock)。死锁发生在当两个线程对一对同步对象有循环依赖关系时。例如,假定一个线程进入了对象X的管程而另一个线程进入了对象Y的管程。如果X的线程试图调用Y的同步方法,它将像预料的一样被锁定。而Y的线程同样希望调用X的一些同步方法,线程永远等待,因为为到达X,必须释放自己的Y的锁定以使第一个线程可以完成。死锁是很难调试的错误,因为:通常

2014-08-26 16:03:41 169

原创 9.线程间通信

上述例题无条件的阻塞了其他线程异步访问某个方法。Java对象中隐式管程的应用是很强大的,但是你可以通过进程间通信达到更微妙的境界。这在Java中是尤为简单的。像前面所讨论过的,多线程通过把任务分成离散的和合乎逻辑的单元代替了事件循环程序。线程还有第二优点:它远离了轮询。轮询通常由重复监测条件的循环实现。一旦条件成立,就要采取适当的行动。这浪费了CPU时间。举例来说,考虑经典的序列问题,当一

2014-08-26 16:02:22 115

原创 8.线程同步

当两个或两个以上的线程需要共享资源,它们需要某种方法来确定资源在某一刻仅被一个线程占用。达到此目的的过程叫做同步(synchronization)。像你所看到的,Java为此提供了独特的,语言水平上的支持。同步的关键是管程(也叫信号量semaphore)的概念。管程是一个互斥独占锁定的对象,或称互斥体(mutex)。在给定的时间,仅有一个线程可以获得管程。当一个线程需要锁定,它必须进入管程

2014-08-25 17:25:12 214

原创 7.线程优先级

线程优先级被线程调度用来判定何时每个线程允许运行。理论上,优先级高的线程比优先级低的线程获得更多的CPU时间。实际上,线程获得的CPU时间通常由包括优先级在内的多个因素决定(例如,一个实行多任务处理的操作系统如何更有效的利用CPU时间)。一个优先级高的线程自然比优先级低的线程优先。举例来说,当低优先级线程正在运行,而一个高优先级的线程被恢复(例如从沉睡中或等待I/O中),它将抢占低优先级线

2014-08-25 17:23:46 243

原创 6.isAlive()和join()的使用

如前所述,通常你希望主线程最后结束。在前面的例子中,这点是通过在main()中调用sleep()来实现的,经过足够长时间的延迟以确保所有子线程都先于主线程结束。然而,这不是一个令人满意的解决方法,它也带来一个大问题:一个线程如何知道另一线程已经结束?幸运的是,Thread类提供了回答此问题的方法。有两种方法可以判定一个线程是否结束。第一,可以在线程中调用isAlive()。这种方法由Thr

2014-08-25 13:40:32 203

原创 5.创建多线程

到目前为止,我们仅用到两个线程:主线程和一个子线程。然而,你的程序可以创建所需的更多线程。例如,下面的程序创建了三个子线程:// Create multiple threads.class NewThread implements Runnable {    String name; // name of thread    Thread t;    NewThread(Str

2014-08-25 13:38:58 67

原创 4.创建线程

大多数情况,通过实例化一个Thread对象来创建一个线程。Java定义了两种方式:实现Runnable 接口;可以继承Thread类。下面的两小节依次介绍了每一种方式。实现Runnable接口创建线程的最简单的方法就是创建一个实现Runnable 接口的类。Runnable抽象了一个执行代码单元。你可以通过实现Runnable接口的方法创建每一个对象的线程。为实现Run

2014-08-23 17:26:41 301

原创 5.创建多线程

到目前为止,我们仅用到两个线程:主线程和一个子线程。然而,你的程序可以创建所需的更多线程。例如,下面的程序创建了三个子线程:// Create multiple threads.class NewThread implements Runnable {    String name; // name of thread    Thread t;    NewThread(Str

2014-08-23 17:25:55 96

原创 3.主线程

当Java程序启动时,一个线程立刻运行,该线程通常叫做程序的主线程(main thread),因为它是程序开始时就执行的。主线程的重要性体现在两方面:它是产生其他子线程的线程;通常它必须最后完成执行,因为它执行各种关闭动作。尽管主线程在程序启动时自动创建,但它可以由一个Thread对象控制。为此,你必须调用方法currentThread()获得它的一个引用,currentThrea

2014-08-23 15:05:58 320

原创 2.Java线程模型

Java运行系统在很多方面依赖于线程,所有的类库设计都考虑到多线程。实际上,Java使用线程来使整个环境异步。这有利于通过防止CPU循环的浪费来减少无效部分。为更好的理解多线程环境的优势可以将它与它的对照物相比较。单线程系统的处理途径是使用一种叫作轮询的事件循环方法。在该模型中,单线程控制在一无限循环中运行,轮询一个事件序列来决定下一步做什么。一旦轮询装置返回信号表明,已准备好读取网络文件

2014-08-23 15:04:58 181

原创 1.线程的概念

和其他多数计算机语言不同,Java内置支持多线程编程(multithreaded programming)。多线程程序包含两条或两条以上并发运行的部分。程序中每个这样的部分都叫一个线程(thread),每个线程都有独立的执行路径。因此,多线程是多任务处理的一种特殊形式。你一定知道多任务处理,因为它实际上被所有的现代操作系统所支持。然而,多任务处理有两种截然不同的类型:基于进程的和基

2014-08-22 16:45:11 139

原创 12.断言

断言的概念断言用于证明和测试程序的假设,比如“这里的值大于 5”。断言可以在运行时从代码中完全删除,所以对代码的运行速度没有影响。断言的使用断言有两种方法:一种是 assert> ;另一种是 assert> :>。如果布尔表达式的值为false , 将抛出AssertionError 异常; 细节描述是AssertionError异常的描述文本使用 javac –s

2014-08-22 16:44:30 116

原创 11.创建自己的异常子类

尽管Java的内置异常处理大多数常见错误,你也许希望建立你自己的异常类型来处理你所应用的特殊情况。这是非常简单的:只要定义Exception的一个子类就可以了(Exception当然是Throwable的一个子类)。你的子类不需要实际执行什么——它们在类型系统中的存在允许你把它们当成异常使用。Exception类自己没有定义任何方法。当然,它继承了Throwable提供的一些方法。因此,所

2014-08-22 13:39:33 227

原创 10.Java的内置异常

在标准包java.lang中,Java定义了若干个异常类。前面的例子曾用到其中一些。这些异常一般是标准类RuntimeException的子类。因为java.lang实际上被所有的Java程序引入,多数从RuntimeException派生的异常都自动可用。而且,它们不需要被包含在任何方法的throws列表中。Java语言中,这被叫做未经检查的异常(unchecked exceptions )

2014-08-22 13:38:34 272

原创 9.finally块

当异常被抛出,通常方法的执行将作一个陡峭的非线性的转向。依赖于方法是怎样编码的,异常甚至可以导致方法过早返回。这在一些方法中是一个问题。例如,如果一个方法打开一个文件项并关闭,然后退出,你不希望关闭文件的代码被异常处理机制旁路。finally关键字为处理这种意外而设计。finally创建一个代码块。该代码块在一个try/catch 块完成之后另一个try/catch出现之前执行。final

2014-08-21 17:18:02 180

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除