首页 »Java教程 » java面向对象编程:用JAVA设计面向对象的打印程序 »正文
java面向对象编程:用JAVA设计面向对象的打印程序
来源: 发布时间:星期五, 2009年4月3日 浏览:0次 评论:0
用JAVA设计面向对象 打印 JAVA中文站社区门户 w(w"W^4w+f\JAVA中文站社区门户zc&b4s,H0J7A-v8o张来东 ( [email protected]) JAVA中文站社区门户Xb1xvD]7gJAVA中文站社区门户C8q ifd$yok^S3T打印 编写通常采用结构化 编程 思路方法 按特定 位置和 定顺序将打印内容送往打印机 在采用JAVA设计打印 时仍然可采用结构化 思路方法 但是编写较为麻烦且代码不能重用 不是 种好 思路方法,给人 种"新瓶老酒" 感觉 目前为数不少 JAVA书籍在介绍打印时 侧重介绍打印功能 实现 而打印用例 主要代码却是结构化 java网站WebSite在介绍java打印功能时 实现打印 代码也是结构化 JAVA中文站社区门户0a)R)Mw.nsJAVA中文站社区门户1H.{&l2q+`lQpw?
Z如果将打印内容进行对象化分析 设计出面向对象 打印 则会更出色地完成打印要求 并且代码很容易重用 事半功倍 (本文假定你已经了解java 打印功能)
m g ^Htt Nma?1\rn、打印对象 分析 &p/pkq hJ^$DR}"XSJAVA中文站社区门户i[6_0C"p(w,v0c打印通常包含以下基本内容:文字、线条、线框、图像等 比如 个表格是由若干文字、线条和线框对象其组成 为叙述简单 本文仅涉及以下 3种对象 JAVA中文站社区门户 n(q0G)}(VExp It5\U Z1x0{)s文字对象 属性:文字内容 坐标 颜色 字体 对齐方式 "CBy|-_9q'C~'Uz]HT'VxE线条对象 属性:起点坐标 终点坐标 颜色 线宽 $w$K5k7R~8^f2g
qWcJAVA中文站社区门户/u&l.rS$e["c@线框对象 属性:左上角坐标 宽度 高度 线宽 颜色 D2P2sY/tQV#WJAVA中文站社区门户6A,Z#Cu@i&T这些打印对象必须能根据属性将自己绘制出来 从另 个层面 可将打印 页内容 理解为这些打印对象 容器 设计打印 只需将打印内容分解成适当 对象 由这些打印对象 集合来完成打印 要求 例如:打印普通表格 只需将表格分解成若开线框对象 线条对象 和文字对象 )ld S a4a#\JAVA中文站社区门户J3T
Ad?.hz 2、打印对象 设计 JAVA中文站社区门户 M2?9yH6g.B7zJAVA中文站社区门户,pPB2E kF:D9VBU设计思路:根据打印对象 分析 可以将打印 内容看成这些打印对象 集合 实际 打印就是将打印对象集合中 打印对象遍历 其pr 思路方法 因此这几类打印对象就需要封装相同 打印接口 JAVA中文站社区门户9Q$wo\QJAVA中文站社区门户W;^
P VZ}sr1、对象打印接口设计如下: +_,c2PQc*B
LJAVA中文站社区门户0| C[#~$cJAVA中文站社区门户%G[.[j}*N s9V:ndpackage lilidb; JAVA中文站社区门户-z8V:DI9`1@U,vsu(RTM;k}CJ:m(~:simport java.awt.Graphics; JAVA中文站社区门户
m5[,j9t*OWc_2VJAVA中文站社区门户m#M+[2iU/** JAVA中文站社区门户9` Y${0[K%J;FN*打印对象接口; JAVA中文站社区门户:el9C:I:fd* 、文字对象 2、线条对象 3、线框对象 每 JAVA中文站社区门户g\WK}T QR#g*种对象各有其属性 但都必须有pr 思路方法 JAVA中文站社区门户)e~ hNw9Zy%X"}0jS*/ {8iD OMpublic erface Pr Object{ JAVA中文站社区门户 h9bn gGzy0_2F!@/** JAVA中文站社区门户vpRE!gx*OcQ%W*打印或预览实际内容 JAVA中文站社区门户b2^*xb!L[*@param g 打印或预览 图形对象 根据是预览还是打印传入具体 Graphics对象 JAVA中文站社区门户M%]+s
c@'m \*/ r7\'YKg,T%_ Sifkpublic void pr (Graphics g); JAVA中文站社区门户@3j^4M~E'E2eC} E8BvCLyZ u cU\JAVA中文站社区门户,^S7xil+G&^2syc4q!]'t"MGt9c$OwV
UbW:aJAVA中文站社区门户+Y%a`:k?m_S4q2、 文字打印对象 设计 !fM#w ^3@+AJAVA中文站社区门户8v4D)d6}#ig%F为了叙述 简单 文中 打印对象 未加居中等处理 JAVA中文站社区门户)rx7~ T8FvgJAVA中文站社区门户$vGpF#]$Mot;Urd
Qj2bpackage lilidb; JAVA中文站社区门户,^.R3z7p`JAVA中文站社区门户4b5u6G:Hu5Nimport java.awt.*; !koXF
[%e._import java.util.*; h]Q\
n-u-?i(@)z.}ei+E4f2V
}/** JAVA中文站社区门户p#C^!Z
_PO"[*打印文字对象 \0dg#d0Nn%R5M**/ U
{,GEqoc[[V9[3C!ZB(]5ShF$_public Pr Label implements Pr Object{ +qA%D?8SJAVA中文站社区门户GZv^.d1X2rQ7G"r6SString label; JAVA中文站社区门户*h{3z"T$jkI px; :cb}y u7p;zI} py; JAVA中文站社区门户i&s7ey&hColor color = Color.black; +qv-R$W6t"}FontMetrics fm; D3H\'Q8b*Hy`3w s8|
Q/** $g$i
R;D Jm*构造Pr Label 对象 JAVA中文站社区门户2h~fH!Vq6qM2RXf*@param ls 标签内容 JAVA中文站社区门户.dy/o.G|7}*@param x 标签 X坐标 i G2d
f-EhD{^ Hv*@param y 标签 Y坐标 JAVA中文站社区门户;\lfQ'IKp*/ %|'fd
vfpublic Pr Label(String ls, x, y){ JAVA中文站社区门户^5f,V2c&DIpA wsulabel = ls; +Olvr e%d$Ypx = x; #Q0i'u"MlU^}d;Npy = y; .qu G
r#\{*girange = 1; JAVA中文站社区门户4|:_yS/wX;@*[y} ,]4xi Cy/** JAVA中文站社区门户'VI],r;l-q&R;d#D* 设置颜色 c1ZF]et%])M* @para colr 颜色值 JAVA中文站社区门户-\gH&jQ'G1C-L\*/ JAVA中文站社区门户H
II|O#A4X Ypublic void Range(Color colr){ igJ W/Tcolor = colr; V+MuoOlAN} JAVA中文站社区门户T
Qg:r/` LXBO4_O @JAVA中文站社区门户vJ E*O _ z/** JAVA中文站社区门户.i"^{:E6D*设置标签字体 a jg5xLE(P*@param fontn 字体名称 JAVA中文站社区门户l'zvN0|!F)L
R?
c*@param type 字体类型 可选值为 Font.BOLD,Font.ITALIC,Font.PLAIN JAVA中文站社区门户;w\+i$q9v1Ig|!o#Xx
G*@param size 字体象素尺寸 JAVA中文站社区门户0j.}6x6{f@*/ JAVA中文站社区门户$kv?
uP6npublic void Font(String fontn, type, size){ JAVA中文站社区门户9J/y oc~$afont = Font(fontn,type,size); JAVA中文站社区门户 eH qhEN-SR:f} JAVA中文站社区门户!`G"k*@"u*}?/** :S?Zp3kz*设置标签位置 JAVA中文站社区门户6F8S}dTPcE|y.n'oh*@param x x坐标 JAVA中文站社区门户"_I6LY9x*@param y y坐标 7ScFJ:z-Cq*/ ;y;}N]#P#C%|NK jpublic void LabelPosition( x, y){ 'X,Xr@i5\1N
G&vpx = x; .s4uio\py = y; JAVA中文站社区门户"yo5z+Q,e L"q} 8?_.{:M-I6w8G[:`P/** JAVA中文站社区门户~6NnY(T9c,?.j4T*设置标签内容 t:\Xg\
zJ)E~*@param ls 标签内容 Ta/HIQ!fk%cis*/ zQ?"]w:NoA4Bpublic void LabelString(String ls){ JAVA中文站社区门户;QuXIKo3ndNlabel = ls; Yf2F Hv!}4n} JAVA中文站社区门户a,W.j e;L{/** %fX_`'y&Z,nr~*打印或预览实际内容 K ]s+IJ*@param g 打印或预览 图形对象 8n eREM-t-@m"n*/ KK/[#hz`*P#j6V!Gpublic void pr (Graphics gg){ /v7l*tucNGraphics2D g = (Graphics2D)gg; pe(jg1|9~F2HM;eg. Font(font); ?N_3s(XQ
]Zg.drawString(label, px, py) JAVA中文站社区门户d X/i!OHg} JAVA中文站社区门户5]0_R Wf:`} JAVA中文站社区门户`LtE!j} JAVA中文站社区门户2Wq8X.?E%X;@JAVA中文站社区门户
Z&a
w/j4kS]-W?!C @ncE7{.]/[I7OJAVA中文站社区门户-As&~3IRY*N pr ~1X3、 线条打印对象 设计 JAVA中文站社区门户D.qt
G gS&y
zo:q4KTJAVA中文站社区门户d
Y G3?ogpackage lilidb; JAVA中文站社区门户s%pKW!ml!poNE3ghj4pDimport java.awt.*; JAVA中文站社区门户-AfX3`6Kimport java.util.*; JAVA中文站社区门户;HI4b!l"ZXKimport java.awt.Graphics2D; L;Io"F%y g&^import java.awt.Graphics; 5by){5i!qz7n^ib^`H5G/** 4l3f1r&j;J wTxl;?W2rF*线打印对象 $}jx2[
U S*主要打印线条 其打印位置、和线形可以设置 JAVA中文站社区门户#J.fx&s^:cj5c:kvk*/ JAVA中文站社区门户R!P5nZ0GD Epublic Pr Line implements Pr Object{ sAib%NMo/** JAVA中文站社区门户(j7L:Ek]2I5_Clx*线 起点 7m
xFv;W`"~3IYG*/ JAVA中文站社区门户"[Z;eI4I
q~1F startX; JAVA中文站社区门户
d~&i3Ld*|&s&~4d1f startY; |