iText:iText构造PDF文件

IText构造PDF文件

1.1 生成Document

Document是我们要生成的PDF文件所有元素的容器,因此要生成一个PDF文档,必须首先定义一个Document对象。
Document有三种构造函数:
   public Document();
   public Document(Rectangle pageSize);
   public Document(Rectangle pageSize, float marginLeft,
   float marginRight, float marginTop, float marginBottom);
第一种方法没有定义任何参数,生成的文档将自动采用A4大小的纸张;第二种方法,用户可以定义纸张的大小;而第三种方法中,用户不仅可以定义纸张大小,而且还能定义页面的左右上下边距。
我们通过下面的语句定义一个Document对象,页面大小为A4,四周边距均为50。
    Document document = new Document(PageSize.A4, 50, 50, 50, 50);
如果页面需要采用横排模式,只要修改第一个参数就行:
Document doc = new Document(PageSize.A4.rotate(),50,50,50,50);

1.2 指定Document类型为PDF

定义了Document对象后,紧接着需要指定Document对象的类型。因为使用iText库不仅支持PDF文档的创建,还可以支持Html、RTF、Xml、Word等多种文档类型,我们要生成PDF文档格式,需要调用如下的方法:

PdfWriter writer = PdfWriter.getInstance(document,
                  new FileOutputStream("c:\\ITextTest.pdf"));
如果你想创建的不是PDF文档,则可以根据你想创建的文档类型选择创建HtmlWriter、RtfWriter、XmlWriter、RtfWriter2(注:word文档)对象,具体支持的文档类型可以查看iText的API文档。
你可以设置生成的PDF文档外观,比如是否显示菜单栏、工具栏等,设置方法如下:
writer.setViewerPreferences(PdfWriter.HideMenubar);
writer.setViewerPreferences(PdfWriter.HideToolbar);
writer.setViewerPreferences(PdfWriter.HideMenubar
                  | PdfWriter.HideToolbar);
第一条语句隐藏了菜单栏,第二条语句隐藏了工具栏,第三条语句则可以同时实现菜单栏和工具栏的隐藏。

1.3往Document中写入内容

到此为止我们已经成功创建了一个PDF文档,现在可以往里写入数据了。
为了写入数据,我们首先要做的事将当前文档打开:
    document.open();
常用的构成PDF文件的元素有Chunk、Paragraph、Phrase、List、Image、Table等,下面我们对它们进行简单的介绍。

1.4 Chunk

Chunk是可以往Document中添加的最小元素,你可以将其直接添加到Document中,document.add(new Chunk("ZipCode"));
你可以为Chunk对象指定颜色,字体,但是一个Chunk对象只能有一种颜色和字体,也就是说Chunk就是一个“原子”对象,你无法让一个Chunk对象中的不同字符拥有不同的属性。
Chunk对象一个有趣的功能就是可以为其下划线、上划线、删除线。
Chunk title = new Chunk("Title", titleFont);
title.setUnderline(Color.BLACK, 2.0f, 0.0f, 24.0f, 0.0f, PdfContentByte.LINE_CAP_BUTT);
title.setUnderline(Color.BLACK, 2.0f, 0.0f, -12.0f, 0.0f, PdfContentByte.LINE_CAP_BUTT);
通过调用setUnderline()方法并设置参数,你可以将线段添加在Chunk对象的任意位置,还可以设置线段的颜色、粗细和形状(圆头线、平头线等)。
除了直接将Chunk对象加入文档中以外,你也可以将其作为更高级的PDF元素的一部分,比如:
Paragraph p = new Paragraph();
Chunk chunk = new Chunk("总经理");
p.add(chunk);

1.5 Paragraph

Paragraph顾名思义就是段落的意思,就好像Word中的一个段落,你可以定义它的段前间距,段后间距、段落对齐方式、左右缩进:
 p.setAlignment(Element.ALIGN_JUSTIFIED);

 p.setIndentationLeft(15f);

p.setIndentationRight(15f);
p.setSpacingBefore(15f);
p.setSpacingAfter(5f);
第一条语句定义了段落p的对齐方式,第二条语句定义了p的左侧缩进距离,第三条语句定义了p的右侧缩进距离,第四条语句定义了p的段前间距,第五条语句定义了p的段后间距,可以根据实际需要定义相应的值。
定义好一个Paragraph对象之后,将其加入文档中。
document.add(p);   

1.6  Phrase

Phrase实现的功能与Paragraph相似,假如想要往文档中添加一个段落是,我们还是觉得使用Paragraph对象比较合适。

Phrase有许多种构造方式,通常我们只需要new Phrase(String string)或者new Phrase(String string, Font font)就可以创建一个Phrase对象了。但是还有类似Phrase(float leading, String string) 这样的构造函数。参数leading设置的是Phrase对象的行间距,当Phrase内容超过一行时,这个参数的作用就会展现出来。通常leading都应该是一个正值,不过如果你把它设置为一个负值的话,也会发现有趣的事情发生。

1.7 List

List类实现的效果类似于Word中的“项目符号和编号”,你可以通过下面的方法创建一个List对象:
List l = new List(true, false, 10);
l.add(new ListItem("First item of list"));
l.add(new ListItem("Second item of list"));
new List(true, false, 10)函数的第一个参数指明了你创建的是否是一个有编号的列表,true表示创建的是一个有编号的列表;第二个参数表示是否采用字母进行编号,true为字母,false为数字;第三个参数是列表的缩进量。
列表有列表项组成,ListItem就是List的列表项,创建完列表项之后通过add()方法就可以将其加入列表中。
你也可以直接将一个字符串加入List列表:
l.add("Third item of list");
你也可以创建一个新的List对象,将它加入到当前List对象中:
List sublist = new List(false, true, 10);
    sublist.add("First subitem of third item");
    sublist.add("Second subitem of third item");
l.add(sublist);        
最后将List对象加入到文档中。
document.add(l);

1.8 Table和PdfPTable

要在PDF文件中创建表格,iText为我们提供了两个类,Table和PdfPTable。两种方法各有优点,总的来说Table类型的表格实现起来相对比较简单,但如果需要实现的表格比较复杂,有时就必须使用PdfPTable类。
首先简单介绍一下使用Table类生成表格的方法:
    Table t = new Table(3, 2);
    t.setBorderColor(Color.white);
    t.setPadding(5);
    t.setSpacing(5);
    t.setBorderWidth(1);
第一行程序创建了一个3x2的表格,其后的程序分别设置了表格的边框颜色、单元格内文本间距、单元格间距、边框宽度。如果用户不希望显示表格边框,只需要将边框颜色设置成与背景色一致就行。由于默认的文档背景色为白色,因此我们把表格的边框颜色也设置为白色。
表格是有一个个单元格组成的。单元格的创建方法如下:
    Cell c1 = new Cell("Header1");
    t.addCell(c1);
这样我们就在表格的第一行第一列中写入了内容“Header1”。使用同样的方法我们可以继续往表格中加入内容。你会发现我们并没有指定单元格在表格中的位置,那么程序为怎样将我们加入的单元格加到哪里呢?程序默认的加入单元格顺序是从第一行第一列开始,以行的顺序从左往右一次加入单元格,等第一行放满之后再从第二行第一列开始,依次从左往右填充表格。
如果你不想按照程序默认的顺序往表格中写入内容,也可以调用addCell(Cell aCell, int row, int column)或addCell(Cell aCell, Point aLocation)方法,都可以将内容直接放入你指定的表格位置。
可以将一个表格加入另一个表格中,即表格的嵌套,实现的方式是insertTable(Table table)。
    Table subTable = new Table(2, 2);
    subTable.addCell("1.3.1");
    subTable.addCell("1.3.2");
    subTable.addCell("1.3.3");
    t.insertTable(subTable);
PdfPTable类生成表格是这样实现的:
PdfPTable table = new PdfPTable(3);
这样就实现了一个3列的表格。你也可以预先指定每一列的宽度,使用如下的方法实现一个表格:
float[] widths = {15f, 25f, 60f};
PdfPTable table = new PdfPTable(widths);
上面的方法定义了一个3列的表格,每列所占的宽度分别为15%、25%、60%。通常生成的表格默认以80%的比例显示在页面上,你需要调用PdfPTable的setWidthPercentage(float widthPercentage)方法设置表格宽度,如果将参数设置成100,表格将占满整个页面宽度。
也可以设定表格的绝对宽度:table.setTotalWidth(300),这样就将表格的宽度设定在了300px。可是假如表格的内容超过了300px,表格的宽度会自动加长。如果要将表格锁定在300px,还需要添加table.setLockedWidth(true)的设定。
在创建PdfPTable对象的时候只需要指定列数,而不用指定行数,因为行数是可以自动添加的。表格创建完成以后,接着就需要往里面插入单元格元素。PdfPTable对象添加单元格的发放是addCell(Object object)。Object对象可以是PdfPCell、String、Phrase、Image,也可以是是PdfPTable对象本身,即在表格中嵌套一个表格。
为了实现某些特殊的表格形式,需要合并单元格。PdfPCell类提供了setColspan(int colspan)方法用于合并横向单元格,参数colspan指定要合并的单元格数。但是PdfPCell类中没有setRowspan()方法,也就是说你不能合并纵向单元格。不过你可以使用嵌套表格的方法达到类似的效果,就是使用table.addCell(PdfPTable table)将一个表格加入到单元格中。
通常的表格都需要一个表头,你表头中你可以定义表格的每一列所代表的含义,如同下面的这个被保险人清单表,其中第一行的内容就是我们需要的表头:
表头的内容也是通过table.addCell()方法添加到表格中的,完成之后你需要调用table.setHeaderRows(1)方法告诉程序这一行是你的表头。当表内容很大,一页无法显示时,程序会自动将表格进行分页,这时候让程序知道什么是表头就非常必要了,程序会在每一页的表格头部都加上表头。
出于某种需要,你可能必须将表格固定在页面的某一个位置,PdfPTable也为我们提供了这种方法:table.writeSelectedRows(int rowStart, int rowEnd, float xPos, float yPos, PdfContentByte canvas)。你可以参考API文档了解每个参数的含义。

1.9 添加页眉页脚

对于多页文档来说,页码标志是不可少的,这就涉及到了页眉页脚的添加方法。
Document容器里的页眉页脚类叫着HeaderFooter,创建HeaderFooter的方法有两个:
HeaderFooter(Phrase before, boolean numbered);
HeaderFooter(Phrase before, Phrase after);
HeaderFooter类可以替你计算当前页的页码并写入页眉或页脚中,方法一中的参数numbered就是让你选择是否显示页码,before和after参数指的是你要在页码前后显示的内容。加入你希望在将页码显示成“第i页”的形式,通过new HeaderFooter(“第”,”页”)方法就能实现。
通过setAlignment(int alignment)方法你可以设定页眉页脚是左对齐、右对齐还是居中显示。
默认的HeaderFooter对象会在显示一个边框,你可以通过setBorder()方法将其隐藏或选择显示某一侧的边框。
最终你需要告诉程序是将HeaderFooter对象显示为页眉还是页脚,对应的方法是document.setHeader()和document.setFooter()。
下面是实现页眉页脚的一个例子。
    HeaderFooter footer = new HeaderFooter(new Phrase(" 第", FontFooter), new Phrase(" 页", FontFooter));
    footer.setBorder(Rectangle.NO_BORDER);
    footer.setAlignment(Element.ALIGN_BOTTOM);
    document.setFooter(footer);
当生成PDF文档之后,也许你会发现在文档的页眉页脚只从第二页才开始开始,第一页中并没有你期望的页眉页脚。这是因为你程序添加的位置不对,为了在文档的第一页也能产生页眉页脚,你必须把上面的这段程序放在document.open()代码之前。

1.10  关闭Document

通过以上步骤,你基本可以实现一个想要的PDF文档了。你最后要做的就是调用document.close()方法将文档关闭。当然,由于JAVA的异常机制,别忘了把以上的程序放在try…catch()…之中以捕获可能发生的程序异常。

2.1 合并多个PDF文件

开发中有时需要将几个现成的PDF文档合并成一个文档,我们只需要使用PdfCopyFields就能实现。假设我们有两个名为source1.pdf、source2.pdf的文件,我们的目标是将它们合并成一个叫concatenated.pdf的文件。
方法是先用PdfReader对象得到源PDF文件:
PdfReader reader1 = new PdfReader("source1.pdf");
PdfReader reader2 = new PdfReader("source2.pdf");
这样我们的程序就得到了想要合并的文件内容,然后我们再定义一个PdfCopyFields对象:
PdfCopyFields copy = new PdfCopyFields(new FileOutputStream("concatenated.pdf"));
指定生成的文件为concatenated.pdf。然后将读入的内容写入该对象:
copy.addDocument(reader1);

 copy.addDocument(reader2);
关闭PdfCopyFields对象:
copy.close();
    你会发现,一个新的PDF文件就这样生成了,它包含了source1.pdf和source2.pdf两个文件的内容。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
第1篇 Java编程基础 第1章 Java开发环境的搭建(教学视频:9分钟) 2 1.1 理解Java 2 1.2 搭建Java所需环境 3 1.2.1 下载JDK 3 1.2.2 安装JDK 4 1.2.3 配置环境 5 1.2.4 测试JDK配置是否成功 7 实例1 开发第一个Java程序 7 第2章 Java基础类型与运算符(教学视频:39分钟) 9 2.1 基础类型 9 实例2 自动提升 9 实例3 自动转换 10 实例4 常用基础类型之强制转换 11 2.2 运算符 12 实例5 算术运算符 12 实例6 关系运算符 13 实例7 逻辑运算符 14 实例8 位运算符 15 实例9 移位运算符 16 实例10 转型运算符 17 2.3 其他形式 18 实例11 常量与变量 18 实例12 各种进制的转换 19 实例13 Java中的进制与移位运算符 22 第3章 条件控制语句(教学视频:75分钟) 26 3.1 if控制语句 26 实例14 判断输入的年份是否为闰年 26 实例15 抽奖活动 27 3.2 for语句 28 实例16 小九九乘法表 28 实例17 如何列出素数 29 实例18 Java中的递归 31 实例19 男生女生各多少人 32 实例20 求水仙花数 34 实例21 求任意一个正数的阶乘 35 实例22 求n的n次方 35 实例23 利用for循环输出几何图形 36 实例24 杨辉三角 38 3.3 while语句 39 实例25 求1到100之间的和 39 实例26 存上100元需要多少天 40 实例27 输出100之间的所有偶数 41 实例28 如何判断回文数字 42 3.4 do…while语句 43 实例29 输出100之间的所有奇数 44 实例30 求最大的随机数 44 3.5 switch语句 45 实例31 判断字母分类 46 实例32 优良及差 47 实例33 打印任意一年日历 48 实例34 一年四季的划分 51 第2篇 Java数据处理 第4章 异常处理(教学视频:62分钟) 54 4.1 编译时异常 54 实例35 除0发生的算术异常(ArithmeticException) 54 实例36 数组下标越界异常(ArrayIndexOutOfBoundsException) 55 实例37 数组元素类型不匹配异常(ArrayStoreException) 56 实例38 强制类型转换异常(ClassCastException) 56 实例39 索引越界异常(IndexOutOfBoundsException) 57 实例40 空指针异常(NullPointerException) 58 实例41 数字格式转换异常(NumberFornatException) 59 实例42 字符串索引越界异常(StringIndexOutBounds) 60 实例43 操作错误(UnsupportedOperationException) 60 4.2 运行时异常 61 实例44 找不到指定类时发生的异常(ClassNotFoundException) 62 实例45 请求的方法不存在(NoSuchMethodException) 63 4.3 try…catch捕获异常 65 实例46 try…catch捕获异常的实例 66 实例47 try…catch…finally捕获异常的实例 67 实例48 try…catch嵌套捕获异常的实例 68 4.4 throws声明异常 69 实例49 throws声明异常实例一 69 实例50 throws声明异常实例二 70 4.5 throw抛出异常 72 实例51 throw抛出异常实例一 72 实例52 throw抛出异常实例二 73 4.6 自定义异常 74 实例53 自定义异常实例一 74 实例54 自定义异常实例二 75 第5章 数组(教学视频:98分钟) 78 5.1 一维数组 78 实例55 一维数组的创建与使用 78 实例56 按相反的顺序输出 79 实例57 奇偶分组 80 实例58 找宝 81 实例59 寻找最小数 82 实例60 我的位置在哪里 83 实例61 复制数组 85 实例62 插入新元素 86 实例63 数组的合并 87 实例64 去除重复元素 88 实例65 数组求和计算 90 实例66 求最大值、最小值和平均值 91 5.2 二维数组 92 实例67 二维数组的创建与使用 92 实例68 矩阵转置 93 实例69 奇数阶幻方 94 实例70 求方阵对角线之和 96 实例71 矩阵的加法 97 实例72 矩阵的减法 98 实例73 快递报价单 99 5.3 数组的排序 101 实例74 冒泡排序法 102 实例75 数组递增排序 103 实例76 部分数组递增排序 103 实例77 选择排序法 104 实例78 快速排序法 106 第6章 字符串(教学视频:138分钟) 108 6.1 字符串类String 108 实例79 创建字符串类 108 实例80 如何使用charAt()方法计算重复字符 109 实例81 按字母顺序比较大小 110 实例82 首尾相连 111 实例83 字符串间的比较 112 实例84 字符集的解码方法 113 实例85 寻找指定字符第一次出现的位置 114 实例86 寻找指定字符最后出现的位置 115 实例87 我究竟有多长 116 实例88 替换指定的字符 117 实例89 分割字符串 117 实例90 如何使用substring()方法截取子串 118 实例91 分解字符串 119 实例92 字母大小写转换 120 实例93 去除多余的空白 120 实例94 原始数组类型的String形式 121 实例95 Java合法标识符 122 实例96 显示一周各星期的名称 123 实例97 构造空心方框 124 实例98 这一天是星期几 125 实例99 大小写互换 127 实例100 输出指定范围的素数 128 实例101 我出现了几次 129 实例102 算术表达式求值器 129 实例103 字符串对齐调整器 137 实例104 字符串的加密 139 实例105 使用正则表达式验证电话号码的格式 141 6.2 字符串缓存类StringBuffer 143 实例106 创建字符串缓存类 143 实例107 提取单个字符 144 实例108 给指定字符赋值 145 实例109 插入新的字符 146 实例110 插入新的字符串 146 实例111 获取字符串的子串 147 实例112 删除指定的字符 148 实例113 倒置字符串 149 实例114 去除重复字符 149 实例115 检查是否是回文 151 第7章 输入/输出流(教学视频:116分钟) 152 7.1 文件和目录 152 实例116 显示文件的基本信息 152 实例117 显示目录的基本信息 153 实例118 在指定的目录下创建单个文件 156 实例119 在指定的目录下创建多个临时文件 158 实例120 删除指定目录下的文件 160 实例121 移动指定目录下的文件 163 实例122 文件搜索引挚 167 7.2 字节流 169 实例123 复制指定目录下的文件 170 实例124 显示文件中的内容 173 实例125 将数据保存到指定的文件中 175 实例126 将由键盘中录入的信息保存到文件中 176 实例127 一个文件变成多个小文件 178 实例128 多个小文件合成一个文件 181 实例129 统计指定文件中的字符个数 183 实例130 对象的序列化与反序列化 185 实例131 同时显示多个文件 187 实例132 生成zip压缩文件 189 实例133 解压缩zip文件 192 实例134 生成Excel文件 194 实例135 读取Excel文件中的内容 198 实例136 生成PDF文件 199 实例137 读取PDF文件中的内容 203 实例138 用iText生成Word文件 205 实例139 利用POI读取Word文件中的内容 208 7.3 字符流 209 实例140 按顺序创建文件 210 实例141 按顺序读取文件 211 实例142 追加文件内容 211 实例143 只显示文件中指定的字符 214 实例144 读取jar包文件 215 实例145 文件的加密/解密操作 217 实例146 复制图片 219 实例147 随机读写Java类文件 221 第3篇 Java面向对象编程 第8章 面向对象(教学视频:72分钟) 226 8.1 类 226 实例148 简单的通讯录类 226 实例149 简单的长度单位转换类 227 实例150 卡车和卡车司机之间的关系 229 实例151 双色球 231 8.2 成员变量和方法 236 实例152 使用类作为成员变量 236 实例153 构造方法 237 实例154 使用静态成员变量计算内存中实例化的对象数目 239 实例155 实现加减乘除的方法 240 8.3 面向对象的设计模式 241 实例156 Singleton单例模式 242 实例157 招聘(简单工厂模式) 243 实例158 同学聚会(工厂方法模式) 244 实例159 图书展(抽象工厂模式) 246 实例160 汽车适配器(Adapter适配器模式) 248 8.4 垃圾回收 250 实例161 垃圾回收的机制 250 第9章 面向对象的四大特征(教学视频:65分钟) 252 9.1 抽象 252 实例162 求自定义几何图形的面积和周长 252 实例163 使用抽象方法实现的支票夹 254 9.2 封装 257 实例164 世界小姐参赛资格 257 实例165 自定义复数类 261 9.3 继承 264 实例166 轿车与本田的关系 264 实例167 继承关系的加载顺序 266 实例168 如何访问同名的方法或变量 268 实例169 super()方法的使用 271 实例170 this方法的使用 274 实例171 一张考试成绩单 275 实例172 银行自动存取一体机 278 9.4 多态 284 实例173 饮食文化 284 实例174 使用构造方法的重载计算课程的GPA值 287 第10章 内部类与接口(教学视频:41分钟) 290 10.1 成员内部类 290 实例175 成员内部类的使用规范 290 实例176 猜谜 292 10.2 方法内部类 294 实例177 局部内部类的使用规范 294 实例178 奖学金的评分标准 295 10.3 匿名内部类 297 实例179 匿名内部类的使用规范 297 实例180 电话与移动电话 299 10.4 静态内部类 300 实例181 静态内部类的使用规范 300 实例182 苹果的来历 302 10.5 接口 303 实例183 求n的幂数与倍数 304 实例184 商品订单 306 实例185 多功能排序 310 第11章 Java常用类(教学视频:66分钟) 315 11.1 数学Math类 315 实例186 求圆周率∏值 315 实例187 求对数值 316 实例188 使用取整函数 317 11.2 Random类的使用 318 实例189 随机数 319 实例190 验证码 322 11.3 Date类和Calendar类 324 实例191 使用Date类获取系统的当前时间 324 实例192 使用DateFormat类获取系统的当前时间 325 实例193 使用GregorianCalendar类获取系统的当前时间 326 实例194 使用SimpleDateFormat类获取系统的当前时间 329 实例195 显示某年某月某一周的信息 330 实例196 显示某年某月的信息 332 实例197 时间的设置与获取 334 实例198 万年历(农历和阳历的互换) 337 11.4 Formatter类的使用 347 实例199 时间格式转换符的使用 347 实例200 数据格式转换符的使用 349 11.5 System类的使用 351 实例201 记录程序执行的时间 351 实例202 程序的退出 352 实例203 获取程序运行环境的信息 353 第4篇 Java高级开发技术 第12章 集合(教学视频:45分钟) 358 12.1 Set 358 实例204 利用HashSet删除学生 358 实例205 不重复的随机数序列 360 实例206 运用映射的相关类(Map) 363 实例207 运用集的相关类(Set) 365 12.2 List 368 实例208 增加所需的元素 368 实例209 Iterator迭代器的使用 370 实例210 谁是幸运儿 371 实例211 自定义Queue队列 373 实例212 List、Set与Array之间的相互转换 375 实例213 二分查找法的实现方法 377 实例214 模拟操作系统的进程调度 379 实例215 利用栈将字符串逆序输出 381 实例216 动态的数组链表 382 实例217 你能猜出鱼是谁的宠物吗? 387 实例218 使用Collections类对List的排序操作 393 实例219 LinkedList的添加删除操作 395 实例220 运用Vector 397 实例221 改变Properties文件中的键值 399 第13章 多线程编程(教学视频:121分钟) 405 13.1 多线程的五种基本状态 405 实例222 启动线程 405 实例223 参赛者的比赛生活(线程休眠唤醒) 407 实例224 资源搜索并下载(线程等待和通报) 410 实例225 模拟淘宝购物买卖双方交易问题 412 实例226 携子之手 与子偕老(join) 415 实例227 线程让步(Yield) 417 实例228 会走动的钟(多线程) 419 实例229 变形金刚中的守护神(守护线程) 424 实例230 查看JVM中所有的线程的活动状况 426 实例231 模仿网络快车下载工具下载文件 428 13.2 多线程的同步与互斥 436 实例232 多线程同步方法的实例 436 实例233 ATM存取一体机(线程同步互斥) 437 实例234 我的钱哪里去了 440 实例235 门锁打不开了(死锁) 444 实例236 门锁终于被打开了(解决死锁) 446 实例237 一个死锁的例子 448 13.3 线程的优先级 451 实例238 排座位(线程优先级) 451 实例239 赛车 454 13.4 定时器 458 实例240 定时器(Timer) 458 实例241 数字定时器 459 13.5 线程连接池 462 实例242 手术任务(线程池) 462 实例243 模拟人工服务台(线程连接池) 466 13.6 线程应用实例 471 实例244 下雪的村庄 472 实例245 小飞侠 474 实例246 飞流直下 477 实例247 多线程断点续传 479 实例248 滚动的珠子 485 实例249 余额查询 489 实例250 滚动的文字 492 实例251 漂浮效果 495 实例252 监视内存的使用情况 499 实例253 璀璨的星空 501 实例254 银行和超市业务的模拟 505 第14章 泛型(教学视频:43分钟) 511 14.1 泛型基础 511 实例255 一个关于泛型的简单例子 511 实例256 带两个类型参数的泛型 513 实例257 有界类型程序示例 514 实例258 通配符使用示例 515 实例259 泛型方法使用示例 516 实例260 泛型接口示例 518 实例261 泛型实现坐标打印 519 14.2 泛型类的继承 521 实例262 继承泛型类示例 521 实例263 继承非泛型类示例 522 实例264 泛型类的类型识别示例 523 实例265 强制类型转换示例 525 14.3 擦拭 526 实例266 无限界的擦拭 526 实例267 有限界的擦拭 527 14.4 集合泛型类 528 实例268 Hashtable的泛型化 528 实例269 多功能画笔 529 第15章 网络编程(教学视频:52分钟) 534 15.1 IP地址 534 实例270 获取计算机名与IP地址 534 实例271 获取网址的IP地址 535 实例272 判断两个网址的主机名是否一样 536 实例273 测试IP的类型 537 实例274 查找主机 538 实例275 主机所支持的协议 539 15.2 URL类的使用 540 实例276 使用URL访问网页 540 实例277 URL的组成部分 541 实例278 通过指定的URL可以获取网页的源代码 542 实例279 一对多通信模式 544 实例280 自制浏览器 549 实例281 扫描TCP端口 551 实例282 TCP协议服务器 552 实例283 TCP协议客户机 553 实例284 Socket连接信息 555 实例285 Echo服务的客户端是如何实现的? 556 实例286 检测本机的服务端口 558 实例287 下载的页面不丢失链接 559 实例288 如何对网页进行重新定向 560 实例289 在Internet上搜索对象 560 实例290 LAN使用代理服务器 562 实例291 BBS论坛服务器端 567 实例292 UDP报文的发送与接收 579 第16章 数据库技术(教学视频:38分钟) 583 实例293 加载JDBC驱动程序 583 实例294 通过JDBC对数据库进行查询 584 实例295 数据库更新 585 实例296 获取数据库的基本信息 586 实例297 获取数据库对SQL支持的信息 589 实例298 处理访问数据库出现的常见异常情况 591 实例299 在Servlet中连接数据库 593 实例300 数据分页显示 595 实例301 批处理 601 实例302 事物处理 604 实例303 调用存储过程 608 实例304 连接ODBC数据库 611 实例305 数据库中图片文件的存取 614 第17章 界面设计--Swing(教学视频:88分钟) 618 17.1 Swing组件介绍及应用 618 实例306 JFrame框架的应用 618 实例307 Border的使用 619 实例308 使用Icon组件显示一张图片 620 实例309 Icon接口的应用 621 实例310 JLabel组件 622 实例311 Icon应用到JLabel中 623 实例312 JButton的使用 624 实例313 在JButton上设置快捷键 625 实例314 设置默认按钮 626 实例315 使用JCheckBox组件 627 实例316 JCheckBox事件处理 629 实例317 JRadioButton的使用 630 实例318 JComboBox的使用 632 实例319 利用ComboModel构造JComboBox 633 实例320 DefaultComboBoxModel的使用 635 实例321 建立有图像的JComboBox 636 实例322 建立可自行输入的JComboBox 637 实例323 JComboBox的事件处理 638 实例324 JTextField组件的使用 640 实例325 使用JTextArea组件 641 17.2 页面布局及事件监听 642 实例326 BorderLayout版面布局 643 实例327 FlowLayout布局管理 644 实例328 应用GridLayout设计版面 645 实例329 如何使用BoxLayout布局管理器 647 实例330 使用ActionEvent监听组件 648 实例331 使用WindowAdapter实现鼠标事件 649 实例332 使用MouseMotionListener监听鼠标 650 实例333 使用KeyListener监听键盘 652 17.3 组件的综合应用 654 实例334 计算器 654 实例335 创建树菜单 657 实例336 在节点中显示详细信息 658 第18章 Applet小应用程序(教学视频:39分钟) 662 实例337 不断变大的文字 662 实例338 灯光扫描的效果 664 实例339 字体逐渐展开的效果 666 实例340 飞舞的气球 668 实例341 逐渐浮现的图片 671 实例342 火焰边框的特效 674 实例343 局部放大效果 677 实例344 水波荡漾的效果 679 实例345 漫天飞花 682 实例346 动感影集 685 实例347 彩虹字 688 实例348 多功能按键 690 第19章 多媒体与图像处理(教学视频:51分钟) 694 19.1 多媒体 694 实例349 测试音频播放器 694 实例350 测试视频播放器 696 实例351 视频反色效果 698 实例352 实现一个录音机 703 实例353 建立一个调色板 707 19.2 图像处理 710 实例354 在计算机内存中创建一个图像 710 实例355 会移动的图像 712 实例356 将图片进行180度旋转 714 实例357 处理图像的明暗度 716 实例358 如何将彩色图转化为灰度图 721 实例359 锐化和模糊图像 724 实例360 显示一个图像的轮廓 727 实例361 如何放大及拉伸图像 730 第20章 JSP开发技术(教学视频:62分钟) 735 20.1 JSP基础 735 实例362 网页版的9×9乘法口诀 735 实例363 Java Servlet小程序 737 实例364 Servlet对表单的处理过程 738 实例365 获取/修改JavaBeans中的内容 741 20.2 JSP程序设计 743 实例366 喜连大三元 743 实例367 运气对对碰 748 实例368 文字样式统计器 752 实例369 图形统计器 754 20.3 垃圾信息投诉站 756 实例370 创建投诉表单 756 实例371 保存投诉的内容 760 实例372 实现投诉站的后台操作 762 实例373 取消投诉内容 764 实例374 站内信 767 20.4 网站在线评估系统 769 实例375 创建评估问卷 769 实例376 实现评估的后台操作 771 实例377 查看评估结果 773 第5篇 Java综合案例 第21章 模拟服务器与客户端之间的通信(教学视频:13分钟) 778 21.1 实例介绍 778 21.2 框架设计 779 21.2.1 项目的总体结构 779 21.2.2 搭建开发环境 779 21.2.3 确定项目工程目录 779 21.3 公用模块设计 780 21.4 客户端程序 780 21.4.1 客户端的工作流程 780 21.4.2 编写客户端的源程序 781 21.4.3 客户端源的程序解读 783 21.5 服务器端程序 785 21.5.1 服务器端的工作流程 785 21.5.2 编写服务器端的源程序 785 21.5.3 服务器端的源程序解读 788 21.6 小结 790 第22章 书店管理系统(教学视频:56分钟) 791 22.1 实例分析 791 22.2 系统设计 792 22.2.1 结构分析 792 22.2.2 搭建环境 792 22.2.3 创建目录 793 22.3 数据库设计 793 22.4 公用模块设计 795 22.4.1 data包中的类 795 22.4.2 util包中的类 798 22.5 用户登录模块 800 22.6 系统主界面 802 22.7 基础维护模块 804 22.7.1 图书维护 804 22.7.2 用户维护 811 22.8 借还管理模块 818 22.8.1 借书 818 22.8.2 还书 821 22.9 查询管理模块 824 22.9.1 图书查询 824 22.9.2 用户查询 826 22.10 系统管理模块 829 22.11 小结 831

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值