A. java實現簡單的畫圖板
樓主寫一個html,很容易把下面代碼嵌入到applet,可以google一下實現,
還有自己不知道算不算復制。。。-_-!
--------------------------------------------------------------------
樓主給你一個我的,直接保存成pb.java編譯運行,就是你要的畫圖功能 ,可以參考一下
____________________________________________________________________
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import java.awt.geom.*;
import java.io.*;
class Point implements Serializable
{
int x,y;
Color col;
int tool;
int boarder;
Point(int x, int y, Color col, int tool, int boarder)
{
this.x = x;
this.y = y;
this.col = col;
this.tool = tool;
this.boarder = boarder;
}
}
class paintboard extends Frame implements ActionListener,MouseMotionListener,MouseListener,ItemListener
{
int x = -1, y = -1;
int con = 1;//畫筆大小
int Econ = 5;//橡皮大小
int toolFlag = 0;//toolFlag:工具標記
//toolFlag工具對應表:
//(0--畫筆);(1--橡皮);(2--清除);
//(3--直線);(4--圓);(5--矩形);
Color c = new Color(0,0,0); //畫筆顏色
BasicStroke size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);//畫筆粗細
Point cutflag = new Point(-1, -1, c, 6, con);//截斷標志
Vector paintInfo = null;//點信息向量組
int n = 1;
FileInputStream picIn = null;
FileOutputStream picOut = null;
ObjectInputStream VIn = null;
ObjectOutputStream VOut = null;
// *工具面板--畫筆,直線,圓,矩形,多邊形,橡皮,清除*/
Panel toolPanel;
Button eraser, drLine,drCircle,drRect;
Button clear ,pen;
Choice ColChoice,SizeChoice,EraserChoice;
Button colchooser;
Label 顏色,大小B,大小E;
//保存功能
Button openPic,savePic;
FileDialog openPicture,savePicture;
paintboard(String s)
{
super(s);
addMouseMotionListener(this);
addMouseListener(this);
paintInfo = new Vector();
/*各工具按鈕及選擇項*/
//顏色選擇
ColChoice = new Choice();
ColChoice.add("black");
ColChoice.add("red");
ColChoice.add("blue");
ColChoice.add("green");
ColChoice.addItemListener(this);
//畫筆大小選擇
SizeChoice = new Choice();
SizeChoice.add("1");
SizeChoice.add("3");
SizeChoice.add("5");
SizeChoice.add("7");
SizeChoice.add("9");
SizeChoice.addItemListener(this);
//橡皮大小選擇
EraserChoice = new Choice();
EraserChoice.add("5");
EraserChoice.add("9");
EraserChoice.add("13");
EraserChoice.add("17");
EraserChoice.addItemListener(this);
////////////////////////////////////////////////////
toolPanel = new Panel();
clear = new Button("清除");
eraser = new Button("橡皮");
pen = new Button("畫筆");
drLine = new Button("畫直線");
drCircle = new Button("畫圓形");
drRect = new Button("畫矩形");
openPic = new Button("打開圖畫");
savePic = new Button("保存圖畫");
colchooser = new Button("顯示調色板");
//各組件事件監聽
clear.addActionListener(this);
eraser.addActionListener(this);
pen.addActionListener(this);
drLine.addActionListener(this);
drCircle.addActionListener(this);
drRect.addActionListener(this);
openPic.addActionListener(this);
savePic.addActionListener(this);
colchooser.addActionListener(this);
顏色 = new Label("畫筆顏色",Label.CENTER);
大小B = new Label("畫筆大小",Label.CENTER);
大小E = new Label("橡皮大小",Label.CENTER);
//面板添加組件
toolPanel.add(openPic);
toolPanel.add(savePic);
toolPanel.add(pen);
toolPanel.add(drLine);
toolPanel.add(drCircle);
toolPanel.add(drRect);
toolPanel.add(顏色); toolPanel.add(ColChoice);
toolPanel.add(大小B); toolPanel.add(SizeChoice);
toolPanel.add(colchooser);
toolPanel.add(eraser);
toolPanel.add(大小E); toolPanel.add(EraserChoice);
toolPanel.add(clear);
//工具面板到APPLET面板
add(toolPanel,BorderLayout.NORTH);
setBounds(60,60,900,600); setVisible(true);
validate();
//dialog for save and load
openPicture = new FileDialog(this,"打開圖畫",FileDialog.LOAD);
openPicture.setVisible(false);
savePicture = new FileDialog(this,"保存圖畫",FileDialog.SAVE);
savePicture.setVisible(false);
openPicture.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{ openPicture.setVisible(false); }
});
savePicture.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{ savePicture.setVisible(false); }
});
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{ System.exit(0);}
});
}
public void paint(Graphics g)
{
Graphics2D g2d = (Graphics2D)g;
Point p1,p2;
n = paintInfo.size();
if(toolFlag==2)
g.clearRect(0,0,getSize().width,getSize().height);//清除
for(int i=0; i<n ;i++){
p1 = (Point)paintInfo.elementAt(i);
p2 = (Point)paintInfo.elementAt(i+1);
size = new BasicStroke(p1.boarder,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);
g2d.setColor(p1.col);
g2d.setStroke(size);
if(p1.tool==p2.tool)
{
switch(p1.tool)
{
case 0://畫筆
Line2D line1 = new Line2D.Double(p1.x, p1.y, p2.x, p2.y);
g2d.draw(line1);
break;
case 1://橡皮
g.clearRect(p1.x, p1.y, p1.boarder, p1.boarder);
break;
case 3://畫直線
Line2D line2 = new Line2D.Double(p1.x, p1.y, p2.x, p2.y);
g2d.draw(line2);
break;
case 4://畫圓
Ellipse2D ellipse = new Ellipse2D.Double(p1.x, p1.y, Math.abs(p2.x-p1.x) , Math.abs(p2.y-p1.y));
g2d.draw(ellipse);
break;
case 5://畫矩形
Rectangle2D rect = new Rectangle2D.Double(p1.x, p1.y, Math.abs(p2.x-p1.x) , Math.abs(p2.y-p1.y));
g2d.draw(rect);
break;
case 6://截斷,跳過
i=i+1;
break;
default :
}//end switch
}//end if
}//end for
}
public void itemStateChanged(ItemEvent e)
{
if(e.getSource()==ColChoice)//預選顏色
{
String name = ColChoice.getSelectedItem();
if(name=="black")
{c = new Color(0,0,0); }
else if(name=="red")
{c = new Color(255,0,0);}
else if(name=="green")
{c = new Color(0,255,0);}
else if(name=="blue")
{c = new Color(0,0,255);}
}
else if(e.getSource()==SizeChoice)//畫筆大小
{
String selected = SizeChoice.getSelectedItem();
if(selected=="1")
{
con = 1;
size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);
}
else if(selected=="3")
{
con = 3;
size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);
}
else if(selected=="5")
{con = 5;
size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);
}
else if(selected=="7")
{con = 7;
size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);
}
else if(selected=="9")
{con = 9;
size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);
}
}
else if(e.getSource()==EraserChoice)//橡皮大小
{
String Esize = EraserChoice.getSelectedItem();
if(Esize=="5")
{ Econ = 5*2; }
else if(Esize=="9")
{ Econ = 9*2; }
else if(Esize=="13")
{ Econ = 13*2; }
else if(Esize=="17")
{ Econ = 17*3; }
}
}
public void mouseDragged(MouseEvent e)
{
Point p1 ;
switch(toolFlag){
case 0://畫筆
x = (int)e.getX();
y = (int)e.getY();
p1 = new Point(x, y, c, toolFlag, con);
paintInfo.addElement(p1);
repaint();
break;
case 1://橡皮
x = (int)e.getX();
y = (int)e.getY();
p1 = new Point(x, y, null, toolFlag, Econ);
paintInfo.addElement(p1);
repaint();
break;
default :
}
}
public void mouseMoved(MouseEvent e) {}
public void update(Graphics g)
{
paint(g);
}
public void mousePressed(MouseEvent e)
{
Point p2;
switch(toolFlag){
case 3://直線
x = (int)e.getX();
y = (int)e.getY();
p2 = new Point(x, y, c, toolFlag, con);
paintInfo.addElement(p2);
break;
case 4: //圓
x = (int)e.getX();
y = (int)e.getY();
p2 = new Point(x, y, c, toolFlag, con);
paintInfo.addElement(p2);
break;
case 5: //矩形
x = (int)e.getX();
y = (int)e.getY();
p2 = new Point(x, y, c, toolFlag, con);
paintInfo.addElement(p2);
break;
default :
}
}
public void mouseReleased(MouseEvent e)
{
Point p3;
switch(toolFlag){
case 0://畫筆
paintInfo.addElement(cutflag);
break;
case 1: //eraser
paintInfo.addElement(cutflag);
break;
case 3://直線
x = (int)e.getX();
y = (int)e.getY();
p3 = new Point(x, y, c, toolFlag, con);
paintInfo.addElement(p3);
paintInfo.addElement(cutflag);
repaint();
break;
case 4: //圓
x = (int)e.getX();
y = (int)e.getY();
p3 = new Point(x, y, c, toolFlag, con);
paintInfo.addElement(p3);
paintInfo.addElement(cutflag);
repaint();
break;
case 5: //矩形
x = (int)e.getX();
y = (int)e.getY();
p3 = new Point(x, y, c, toolFlag, con);
paintInfo.addElement(p3);
paintInfo.addElement(cutflag);
repaint();
break;
default:
}
}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void mouseClicked(MouseEvent e){}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==pen)//畫筆
{toolFlag = 0;}
if(e.getSource()==eraser)//橡皮
{toolFlag = 1;}
if(e.getSource()==clear)//清除
{
toolFlag = 2;
paintInfo.removeAllElements();
repaint();
}
if(e.getSource()==drLine)//畫線
{toolFlag = 3;}
if(e.getSource()==drCircle)//畫圓
{toolFlag = 4;}
if(e.getSource()==drRect)//畫矩形
{toolFlag = 5;}
if(e.getSource()==colchooser)//調色板
{
Color newColor = JColorChooser.showDialog(this,"調色板",c);
c = newColor;
}
if(e.getSource()==openPic)//打開圖畫
{
openPicture.setVisible(true);
if(openPicture.getFile()!=null)
{
int tempflag;
tempflag = toolFlag;
toolFlag = 2 ;
repaint();
try{
paintInfo.removeAllElements();
File filein = new File(openPicture.getDirectory(),openPicture.getFile());
picIn = new FileInputStream(filein);
VIn = new ObjectInputStream(picIn);
paintInfo = (Vector)VIn.readObject();
VIn.close();
repaint();
toolFlag = tempflag;
}
catch(ClassNotFoundException IOe2)
{
repaint();
toolFlag = tempflag;
System.out.println("can not read object");
}
catch(IOException IOe)
{
repaint();
toolFlag = tempflag;
System.out.println("can not read file");
}
}
}
if(e.getSource()==savePic)//保存圖畫
{
savePicture.setVisible(true);
try{
File fileout = new File(savePicture.getDirectory(),savePicture.getFile());
picOut = new FileOutputStream(fileout);
VOut = new ObjectOutputStream(picOut);
VOut.writeObject(paintInfo);
VOut.close();
}
catch(IOException IOe)
{
System.out.println("can not write object");
}
}
}
}//end paintboard
public class pb
{
public static void main(String args[])
{ new paintboard("畫圖程序"); }
}
B. java 繪圖程序
我基於你原來畫圖的方法,添加了事件觸發的命令b[j].setActionCommand("b" + j);否則你不能在事件響應處理的方法中使用e.getActionCommand(),而且字元串的比較用equals方法比較好。現在可以運行了,你可以看一下:
import java.applet.Applet;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class drawing extends Applet implements ActionListener {
Button b[] = new Button[5];
String fontname = "仿宋_GB2312";
int style = Font.PLAIN;
int size = 24;
int index = 0;
Font myfont;
public void init() {
setSize(700,700);
myfont = new Font(fontname, style, size);
b[0] = new Button("扇形");
b[1] = new Button("圓形");
b[2] = new Button("三角形");
b[3] = new Button("長方形");
b[4] = new Button("橢圓形");
for (int j = 0; j < b.length; j++) {
b[j].setBounds(10, 10, 50, 20);
b[j].addActionListener(this);
b[j].setActionCommand("b" + j);
add(b[j]);
}
}
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("b0")) {
index = 0;
repaint();
}
if (e.getActionCommand().equals("b1")) {
index = 1;
repaint();
}
if (e.getActionCommand().equals("b2")) {
index = 2;
repaint();
}
if (e.getActionCommand().equals("b3")) {
index = 3;
repaint();
}
if (e.getActionCommand().equals("b4")) {
index = 4;
repaint();
}
}
public void paint(Graphics g) {
switch (index) {
case 0:
g.fillArc(0, 60, 80, 60, 30, 120);
break;
case 1:
g.drawOval( 300, 50, 60, 60);
break;
case 2:
Polygon filledPolygon = new Polygon();
filledPolygon.addPoint(380, 50);
filledPolygon.addPoint(380, 110);
filledPolygon.addPoint(450, 90);
g.drawPolygon(filledPolygon);
break;
case 3:
g.drawRect( 200, 50, 80, 60);
break;
case 4:
g.drawOval(100, 50, 80, 60);
break;
default:
g.fillArc(0, 60, 80, 60, 30, 120);
break;
}
}
/*
* public void paint(Graphics g) { g.fillArc( 0, 60, 80, 60, 30, 120);
* //繪制扇形 g.drawOval( 100, 50, 80, 60); g.drawRect( 200, 50, 80, 60);
* g.drawOval( 300, 50, 60, 60); Polygon filledPolygon=new Polygon();
* filledPolygon.addPoint(380,50); filledPolygon.addPoint(380,110);
* filledPolygon.addPoint(450,90); g.drawPolygon(filledPolygon); }
*/
}
C. Java開發實戰1200例的作品目錄
第1篇 圖形圖像篇
第1章 Java圖形與文本 2
1.1 繪制圖形和文本 3
實例001 繪制直線 3
實例002 繪制矩形 4
實例003 繪制正方形 5
實例004 繪制橢圓 6
實例005 繪制圓弧 7
實例006 繪制指定角度的填充扇形 8
實例007 繪制多邊形 9
實例008 繪制二次曲線 10
實例009 繪制三次曲線 12
實例010 繪制文本 13
實例011 設置文本的字體 14
實例012 設置文本和圖形的顏色 15
1.2 筆畫和圖形處理 16
實例013 設置筆畫的粗細 16
實例014 設置筆畫樣式 18
實例015 設置連接方式 19
實例016 設置虛線模式 20
實例017 縮放圖形 22
實例018 旋轉圖形 23
實例019 斜切圖形 24
實例020 為圖形填充漸變色 25
實例021 平移坐標軸 27
1.3 繪制圖案 28
實例022 繪制五環圖案 28
實例023 繪制藝術圖案 29
實例024 繪制花瓣 30
實例025 繪制公章 32
1.4 圖形的合並運算 33
實例026 圖形的加運算 33
實例027 圖形的減運算 35
實例028 圖形的交運算 36
實例029 圖形的異或運算 37
第2章 Java圖像處理 39
2.1 圖像處理 40
實例030 繪制圖像 40
實例031 縮放圖像 41
實例032 翻轉圖像 42
實例033 旋轉圖像 44
實例034 傾斜圖像 45
實例035 裁剪圖片 46
2.2 顏色處理 47
實例036 調整圖片的亮度 47
實例037 轉換彩色圖片為灰度圖片 49
實例038 使用像素值生成圖像 50
第3章 繪圖特效 52
3.1 文字特效 53
實例039 立體效果的文字 53
實例040 陰影效果的文字 54
實例041 傾斜效果的文字 55
實例042 漸變效果的文字 56
實例043 會變色的文字 58
實例044 水印文字特效 59
實例045 順時針旋轉文字 60
實例046 動態繪制文本 62
實例047 中文驗證碼 64
實例048 圖片驗證碼 65
實例049 帶干擾線的驗證碼 66
3.2 圖片特效 68
實例050 紋理填充特效 68
實例051 水波效果的圖片 69
實例052 局部圖像放大 71
實例053 圖片半透明特效 73
實例054 圖片溶合特效 74
實例055 以橢圓形顯示圖像 75
實例056 圖片百葉窗特效 76
實例057 圖片馬賽克特效 78
實例058 模糊 80
實例059 銳化 81
實例060 照亮邊緣 82
實例061 反向 84
實例062 光柵圖像 85
實例063 圖片倒影效果 87
第4章 動畫和游戲 90
4.1 文字動畫 91
實例064 文字淡入淡出 91
實例065 文字縮放 93
實例066 文字跑馬燈 94
實例067 字幕顯示 96
實例068 文字閃現 98
實例069 滾動廣告字幕 99
4.2 圖片動畫 101
實例070 圖片淡入淡出 101
實例071 隨滑鼠指針移動的圖片 103
實例072 通過鍵盤移動圖片 104
實例073 圖片動態拉伸 106
實例074 桌面彈球 107
實例075 循環滾動圖片 109
實例076 撞球動畫 111
實例077 電影膠片特效 113
實例078 隨機移動的圖片 115
實例079 雪花飄落動畫 116
實例080 圖片旋轉動畫 118
實例081 圖片閃現動畫 119
實例082 幀動畫效果 121
實例083 水波動畫 123
4.3 游戲開發 125
實例084 圖片配對游戲 125
實例085 小豬走迷宮 128
實例086 拼圖游戲 130
實例087 海灘捉螃蟹 133
實例088 荒山打獵游戲 135
實例089 打字母游戲 137
實例090 警察抓小偷 139
實例091 擲骰子 141
實例092 畫梅花 143
實例093 打造自己的開心農場 144
第5章 列印報表 147
5.1 列印控制 148
實例094 列印對話框 148
實例095 實現列印 149
實例096 列印圖形 150
實例097 列印圖片 152
實例098 列印預覽 153
實例099 倒序列印 155
實例100 為列印內容添加水印 157
實例101 自動為列印內容添加水印 158
5.2 列印的應用 160
實例102 列印快遞單 160
實例103 列印報表 162
實例104 列印桌面圖片 164
實例105 列印柱形圖表 165
實例106 列印餅形圖表 167
實例107 列印折線圖表 169
實例108 列印區域圖表 170
實例109 列印帶柱形圖表的報表 172
實例110 列印帶餅形圖表的報表 174
實例111 列印帶折線圖表的報表 175
實例112 導出報表到Excel表格 177
實例113 導出報表到PDF文檔 179
實例114 批量列印條形碼 181
實例115 相冊特效列印程序 183
實例116 鏡面效果文本列印 186
實例117 透明的列印預覽對話框 187
第6章 管理圖像文件 189
6.1 圖像的修改與保存 190
實例118 保存圖片文件 190
實例119 修改圖片文件名 191
實例120 縮放圖片並保存 192
實例121 為圖片添加水印並保存 194
實例122 溶合兩張圖片並保存 196
實例123 模糊圖片並保存 197
實例124 銳化圖片並保存 199
實例125 照亮邊緣並保存 200
實例126 反向並保存圖片 202
實例127 填充紋理並保存為圖片 204
6.2 圖片在資料庫中的存取 205
實例128 圖片存儲到Access資料庫中 205
實例129 圖片存儲到MySQL資料庫中 206
實例130 圖片存儲到SQLServer資料庫中 208
實例131 讀取Access資料庫中存儲的圖片 209
實例132 讀取MySQL資料庫中存儲的圖片 210
實例133 讀取SQLServer資料庫中存儲的圖片 211
實例134 修改Access資料庫中存儲的圖片 212
實例135 修改MySQL資料庫中存儲的圖片 214
實例136 修改SQLServer資料庫中存儲的圖片 215
6.3 其他應用 216
實例137 獲取滑鼠指針在任意位置的顏色值 216
實例138 圖片瀏覽器 218
實例139 轉換圖片格式 219
實例140 繪制石英鍾 221
實例141 畫圖程序 222
實例142 屏幕抓圖程序 224
實例143 屏幕放大鏡 225
第2篇 JFreeChart圖表篇
第7章 JFreeChart基本操作 230
7.1 JFreeChart基礎操作 231
實例144 基本餅圖 231
實例145 顯示圖示 232
實例146 工具欄提示 233
實例147 亂碼問題 235
實例148 顯示數值 237
實例149 抗鋸齒設置 238
7.2 設置圖表背景 239
實例150 設置背景圖片 239
實例151 設置圖片對齊方式 241
實例152 設置背景圖片透明度 242
實例153 設置背景顏色 243
7.3 處理圖表的邊框 244
實例154 隱藏圖表邊框 244
實例155 圖表邊框筆觸 245
實例156 圖表邊框顏色 247
7.4 修改圖表的圖示 248
實例157 設置圖示背景色 248
實例158 設置圖示邊框 249
實例159 設置圖示邊框顏色 250
實例160 設置圖示邊緣間距 251
實例161 設置圖示字體顏色 252
實例162 設置圖示位置 253
第8章 基礎圖表技術 255
8.1 普通餅圖 256
實例163 分離餅圖 256
實例164 橢圓形餅圖 257
實例165 餅圖的陰影 258
實例166 餅圖的分類邊框顏色 260
實例167 加粗餅圖分類邊框 261
實例168 設置餅圖顏色 262
實例169 餅圖旋轉角度 263
實例170 餅圖旋轉順序 265
實例171 隱藏分類標簽連接線 266
8.2 3D餅圖 267
實例172 創建3D餅圖 267
實例173 3D餅圖透明度 269
實例174 3D餅圖的Z軸 270
實例175 逆時針旋轉3D餅圖 271
實例176 順時針旋轉3D餅圖 272
8.3 多餅圖 274
實例177 實現多餅圖 274
實例178 多餅圖亂碼 275
實例179 多餅圖的展示方式 277
實例180 3D多餅圖 278
8.4 基本柱形圖 280
實例181 簡單柱型圖 280
實例182 柱形圖角度 282
實例183 柱形圖負值 283
8.5 X坐標軸 285
實例184 X軸字體 285
實例185 X軸標簽字體 287
實例186 X軸標簽角度 288
實例187 X軸顯示情況 290
實例188 X軸尺度顏色 292
實例189 隱藏X軸尺度 293
實例190 X軸尺度筆觸 295
實例191 X軸尺度標簽角度 296
實例192 X軸分類的間距 298
實例193 X軸分類與原點的間距 299
實例194 X軸的顯示位置 300
8.6 Y坐標軸 302
實例195 Y軸字體 302
實例196 Y軸標簽字體 304
實例197 Y軸顯示情況 305
實例198 Y軸尺度顏色 307
實例199 隱藏Y軸尺度 309
實例200 Y軸尺度筆觸 310
實例201 Y軸尺度標簽角度 312
實例202 Y軸起始值 313
實例203 Y軸箭頭 314
實例204 Y軸主要刻度線 316
實例205 Y軸主要刻度線長度 317
實例206 Y軸次要刻度線 319
實例207 Y軸次要刻度線長度 320
實例208 設置Y軸最大值 322
實例209 設置Y軸數據范圍 323
實例210 Y軸的顯示位置 324
8.7 高級柱形圖 326
實例211 設置網格豎線 326
實例212 設置網格豎線顏色 328
實例213 設置柱形圖文本註解 329
實例214 設置柱形圖文本註解字體 331
實例215 設置柱形圖文本註解顏色 333
實例216 設置柱形圖文本註解錨點 334
實例217 設置柱形圖文本註解類別錨點 336
實例218 設置柱形圖文本註解旋轉錨點 338
實例219 設置柱形圖線條註解 339
實例220 繪制柱形效果 341
實例221 柱形圖陰影 342
實例222 柱形圖陰影偏移 344
實例223 設置柱形的顏色 345
實例224 繪制3D柱形圖 346
實例225 標記柱形圖區間 348
實例226 多系列柱形圖 350
實例227 多系列3D柱形圖 352
第9章 擴展圖表技術 354
9.1 區域圖 355
實例228 基本區域圖 355
實例229 顯示多分類區域圖 357
實例230 設置區域圖透明度 359
實例231 添加說明文字 360
實例232 設置說明文字位置 362
實例233 區域圖X軸顯示位置 363
實例234 區域圖X軸標簽角度 364
實例235 區域圖X軸尺度標簽角度 366
實例236 設置區域顏色 367
9.2 氣泡圖 368
實例237 基本氣泡圖 368
實例238 氣泡圖X軸標簽 371
實例239 氣泡圖Y軸標簽 372
實例240 設置坐標范圍 374
實例241 設置透明度 375
實例242 設置氣泡顏色 377
實例243 氣泡圖X軸標簽角度 378
實例244 氣泡圖X軸尺度標簽角度 379
9.3 分步圖 381
實例245 基本分步圖 381
實例246 加粗分步圖 383
實例247 顯示虛線效果 385
實例248 設置分步圖顏色 386
實例249 隱藏分步圖 387
實例250 分步圖X軸顯示位置 389
實例251 分步圖X軸標簽角度 390
實例252 分步圖X軸尺度標簽角度 391
9.4 聯合分類圖 393
實例253 生成線形圖與柱形圖 393
實例254 設置圖表高度 395
實例255 設置圖表位置 397
實例256 線形圖與分布圖 398
9.5 雙軸圖 400
實例257 基本雙軸圖 400
實例258 基本雙Y圖 402
實例259 雙Y軸字體 404
實例260 3D雙軸圖 406
實例261 設置雙軸圖顏色 407
實例262 雙軸圖X軸標簽角度 409
實例263 雙軸圖X軸尺度標簽角度 410
9.6 折線圖 412
實例264 基本折線圖 412
實例265 多條折線圖 414
實例266 水平折線圖 416
實例267 隱藏折線圖 417
實例268 加粗折線 419
實例269 顯示折線節點 420
實例270 生成節點圖 421
實例271 設置虛線圖 423
實例272 設置折線顏色 424
實例273 3D折線圖 426
實例274 XY折線圖 427
實例275 排序折線圖 429
9.7 環形圖 431
實例276 基本環形圖 431
實例277 環形圖字體 432
實例278 設置環形深度 434
實例279 分離環形圖 436
實例280 橢圓環形圖 437
實例281 環形的陰影偏移 438
實例282 環形的簡單標簽 439
實例283 環形的旋轉角度 441
9.8 堆積條形圖 442
實例284 基本堆積條形圖 442
實例285 橫向堆積條形圖 445
實例286 設置邊線距離 446
實例287 渲染分組堆積條形圖 447
9.9 時序圖 450
實例288 基本時序圖 450
實例289 設置時間顯示格式 452
實例290 添加雙時間軸 453
實例291 雙時間軸位置 455
實例292 動態顯示十字標記 456
實例293 添加Y軸標記 458
實例294 添加X軸標記 459
實例295 設置刻度單位 461
實例296 設置時間軸范圍 462
第3篇 網路技術篇
第10章 網路應用基礎 466
10.1 網路地址解析 467
實例297 獲取本地主機的IP地址 467
實例298 獲取本地主機的域名和主機名 468
實例299 通過域名獲得IP地址 469
實例300 通過IP地址獲得域名和主機名 470
實例301 獲得內網的所有IP地址 472
10.2 網路資源管理 474
實例302 獲取網路資源的大小 474
實例303 解析網頁中的內容 475
實例304 網路資源的單線程下載 476
實例305 網路資源的多線程下載 478
實例306 下載網路資源的斷點繼傳 480
第11章 TCP套接字 483
11.1 Socket基礎 484
實例307 建立伺服器套接字 484
實例308 建立客戶端套接字 485
實例309 設置等待連接的超時時間 486
實例310 獲取Socket信息 487
實例311 接收和發送Socket信息 488
實例312 關閉Socket緩沖 491
11.2 TCP網路通信 492
實例313 使用Socket通信 492
實例314 防止Socket傳遞漢字亂碼 495
實例315 使用Socket傳遞對象 497
實例316 使用Socket傳輸圖片 499
實例317 使用Socket傳輸音頻 501
實例318 使用Socket傳輸視頻 503
實例319 一個伺服器與一個客戶端通信 504
實例320 一個伺服器與多個客戶端通信 506
實例321 客戶端一對多通信 508
實例322 客戶端一對一通信 509
實例323 基於Socket的資料庫編程 511
實例324 使用Proxy創建代理伺服器 513
實例325 使用ProxySelector選擇代理伺服器 514
11.3 TCP實用程序 516
實例326 聊天室伺服器端 516
實例327 聊天室客戶端 518
第12章 郵件收發 521
12.1 簡單郵件 522
實例328 配置郵件服務 522
實例329 發送郵件 526
實例330 接收郵件 528
12.2 復雜郵件 529
實例331 發送帶附件的郵件 529
實例332 接收帶附件的郵件 531
實例333 發送郵件時進行身份驗證 533
實例334 接收郵件時進行身份驗證 535
實例335 顯示未讀郵件 536
實例336 顯示已讀郵件 539
第4篇 Java安全與Applet應用篇
第13章 Java安全 544
13.1 Java對稱加密 545
實例337 使用BASE64加密 545
實例338 使用BASE64解密 546
實例339 生成DES的密鑰 547
實例340 使用DES加密 548
實例341 使用DES解密 549
實例342 PBE的鹽值 551
實例343 生成PBE的密鑰 552
實例344 使用PBE加密 552
實例345 使用PBE解密 553
13.2 Java非對稱加密 555
實例346 生成RSA密鑰對 555
實例347 使用RSA的簽名 556
實例348 RSA服務端加密 557
實例349 RSA客戶端加密 559
實例350 DH服務端加密 560
實例351 DH客戶端加密 563
13.3 Java單項加密 565
實例352 使用MD5加密 565
實例353 使用Hmac加密 566
實例354 使用DSA加密 568
第14章 Applet的應用 570
14.1 Applet在html中的使用 571
實例355 在html中顯示Applet 571
實例356 設置Applet的顯示位置 572
實例357 Applet獲取頁面傳遞的參數 573
實例358 使用<applet>標記中的archive屬性 574
14.2 Applet的方法 576
實例359 使用paint()方法繪制頁面內容 576
實例360 使用update()方法更新頁面內容 577
實例361 使用repaint()方法重新繪制頁面 578
實例362 Applet顯示地址欄上的路徑 579
實例363 Applet顯示class存放的路徑 581
14.3 Applet中的文字處理 582
實例364 控制Applet字體大小 582
實例365 控制Applet文字位置 583
實例366 控制Applet字體樣式 584
實例367 Applet中繪制立體效果的文字 585
實例368 Applet中繪制陰影效果的文字 586
實例369 Applet中繪制傾斜效果的文字 587
實例370 Applet中繪制漸變效果的文字 588
實例371 Applet中繪制會變色的文字 590
實例372 Applet中繪制順時針旋轉的文字 591
實例373 Applet中動態繪制文本 593
14.4 Applet中的圖形處理 594
實例374 Applet繪制直線 594
實例375 Applet繪制矩形 596
實例376 Applet繪制圓角矩形 597
實例377 Applet繪制橢圓 598
實例378 Applet繪制圓弧 599
實例379 Applet繪制折線 600
實例380 Applet繪制多角形 601
實例381 Applet繪制圖片 602
實例382 Applet中的圖形加運算 603
實例383 Applet中的圖形減運算 604
實例384 Applet中的圖形交運算 606
實例385 Applet中的圖形異或運算 607
實例386 Applet中繪制紋理填充圖形 608
14.5 Applet中的圖像處理 609
實例387 Applet中縮放圖像 609
實例388 Applet中翻轉圖像 610
實例389 Applet中旋轉圖像 612
實例390 Applet中傾斜圖像 613
實例391 Applet中調整圖片的亮度 614
實例392 Applet中繪制中文驗證碼 615
實例393 Applet中繪制圖片驗證碼 617
實例394 Applet中繪制帶干擾線的驗證碼 618
實例395 Applet中模糊圖像 620
實例396 Applet中銳化圖像 621
實例397 Applet中照亮圖像邊緣 622
實例398 Applet中反向圖像 624
實例399 Applet中圖像動態拉伸 625
14.6 Applet中的文字動畫 627
實例400 Applet中文字縮放動畫 627
實例401 Applet中文字跑馬燈動畫 628
實例402 Applet中字幕顯示動畫 630
實例403 Applet中文字閃現動畫 631
實例404 Applet中滾動廣告字幕動畫 633
第5篇 XML篇
第15章 初識XML 636
15.1 XML語言基礎 637
實例405 簡單的XML 637
實例406 驗證XML的格式 638
實例407 XML屬性的使用 639
實例408 XML中CDATA的使用 640
15.2 XML與CSS 642
實例409 在XML中使用CSS 642
實例410 CSS格式化XML布局 643
實例411 CSS格式化XML背景色 645
實例412 CSS格式化XML字體 647
實例413 CSS改變XML中的滑鼠手勢 649
實例414 CSS在XML中添加背景圖 651
實例415 CSS製作XML表格 652
15.3 XML與XSLT的元素 654
實例416 在XML使用XSLT 654
實例417 使用XSLT中的template 656
實例418 使用XSLT中的value-of 657
實例419 使用XSLT中的for-each 659
實例420 使用XSLT中的if 660
實例421 使用XSLT中的sort 662
實例422 使用XSLT中的choose 664
實例423 使用XSLT中的-of 665
實例424 使用XSLT中的apply-templates 667
實例425 使用XSLT中的attribute 669
實例426 使用XSLT中的elements 670
15.4 XML與XSLT的內建函數 672
實例427 使用XSLT中的generate-id() 672
實例428 使用XSLT中的format-number() 674
實例429 使用XSLT中的document() 675
15.5 DTD的引用與驗證 678
實例430 在XML內部定義DTD 678
實例431 在XML外部引用DTD 679
實例432 驗證XML是否符合DTD的定義 680
15.6 使用DTD定義XML元素 682
實例433 在DTD聲明元素 682
實例434 在DTD聲明重復元素 683
實例435 在DTD聲明選擇性元素 684
實例436 在DTD中使用ENTITY 686
15.7 使用DTD定義XML屬性 687
實例437 在DTD聲明元素屬性 687
實例438 在DTD聲明帶有#IMPLIED的屬性 688
實例439 在DTD聲明帶有#REQUIRED的屬性 690
實例440 在DTD聲明帶有#FIXED的屬性 691
實例441 在DTD聲明列舉屬性值 692
實例442 類型為ID的屬性實例 693
實例443 類型為IDREF的屬性實例 695
實例444 類型為NMTOKEN的屬性實例 697
第16章 XML Schema 699
16.1 XSD的引用與驗證 700
實例445 在XML中使用XML Schema 700
實例446 驗證XML是否符合Schema的描述 701
實例447 XSD文檔根元素的引用 703
實例448 在XSD中使用注釋 703
16.2 使用XSD簡單類型定義XML元素 704
實例449 在XSD定義XML元素 704
實例450 使用xs:simpleType和xs:restriction 705
實例451 使用xs:list 706
實例452 使用xs:enumeration 708
實例453 使用xs:pattern 710
16.3 使用XSD復雜類型定義XML元素 711
實例454 使用xs:complexType和xs:sequence 711
實例455 使用xs:choice 713
實例456 使用xs:all 714
實例457 使用xs:group 716
實例458 使用xs:extension和xs:simpleContent 718
實例459 使用xs:extension和xs:complexContent 719
實例460 使用xs:restriction和xs:simpleContent 721
實例461 使用xs:restriction和xs:complexContent 723
實例462 使用xs:attributeGroup和xs:attribute 725
16.4 使用XSD的普通類型 727
實例463 在XSD中對字元進行限制 727
實例464 在XSD中對數值進行限制 728
第17章 解析XML文件 730
17.1 使用SAX讀取XML 731
實例465 從文件中讀取XML 731
實例466 從數據流中讀取XML 732
實例467 從數據源中讀取XML 733
17.2 使用SAX解析XML 734
實例468 解析XML元素名稱 734
實例469 解析XML元素名稱和內容 736
實例470 解析XML元素屬性和屬性值 738
實例471 使用VO解析XML元素 740
實例472 使用VO解析XML元素和屬性 741
實例473 使用SAX驗證DTD 743
17.3 使用DOM讀取XML 745
實例474 從文件中讀取XML 745
實例475 從數據流中讀取XML 746
實例476 從數據源中讀取XML 747
17.4 使用DOM解析XML 748
實例477 解析XML元素名稱 748
實例478 解析XML元素名稱和內容 749
實例479 解析XML元素屬性和屬性值 751
實例480 使用VO解析XML元素 752
實例481 使用VO解析XML元素和屬性 753
17.5 使用DOM操作XML 755
實例482 創建簡單的XML文件 755
實例483 創建基本的XML文件 757
實例484 使用VO創建XML文件 759
實例485 使用DOM添加XML元素 761
實例486 使用DOM修改XML元素 764
實例487 使用DOM刪除XML元素 766
第6篇 操作PDF篇
第18章 操作PDF文檔 770
18.1 文檔和文檔屬性 771
實例488 創建PDF文檔 771
實例489 添加PDF文檔標題 772
實例490 添加PDF文檔主題 773
實例491 添加PDF文檔關鍵詞 774
實例492 添加PDF文檔作者 775
實例493 添加PDF文檔創建者 776
實例494 添加PDF文檔製作者 777
實例495 添加PDF文檔創建日期 778
18.2 初始化操作 779
實例496 設置頁面大小 779
實例497 橫向顯示頁面 780
實例498 縱向顯示頁面 781
實例499 添加水印 782
實例500 添加頁眉和頁腳 783
實例501 創建新頁 784
實例502 為PDF文檔添加頁碼 785
18.3 字體與中文處理 786
實例503 設置特殊的文本字體 786
實例504 加粗字體 787
實例505 添加下劃線 788
實例506 添加刪除線 789
實例507 在PDF文檔中顯示中文 790
實例508 設置PDF文檔密碼 791
18.4 塊、短語、段落、章節和區域 792
實例509 添加和創建塊 792
實例510 設置上標和下標 793
實例511 設置文本背景顏色 794
實例512 添加和創建短語 795
實例513 添加和創建段落 796
實例514 設置段落首行縮進 797
實例515 設置段落的上下間距 798
實例516 設置段落左右縮進 799
實例517 設置段落的對齊方式 800
實例518 設置段落字體大小 801
實例519 設置段落文本顏色 802
實例520 添加章節 803
實例521 在章節中添加小節 804
實例522 在小節中添加列表 805
實例523 在小節中添加段落 807
實例524 在小節中添加表格 808
實例525 在小節中添加圖片 809
18.5 讀取PDF文檔 810
實例526 文本文件轉換為PDF文檔 810
實例527 讀取PDF文檔 812
實例528 讀取加密的PDF文檔 813
實例529 編輯PDF文檔 814
實例530 導入已有文檔 816
實例531 導入並添加頁碼 817
實例532 導入並添加水印 818
實例533 導入並添加新頁和內容 819
實例534 拆分PDF文檔 821
實例535 合並PDF文檔 822
實例536 列印PDF文檔 823
……
第19章 繪制PDF圖形和圖像
第20章 繪制PDF表格
第21章 設置閱讀器參數