⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 用java设计面向对象的打印程序.htm

📁 用JAVA设计面向对象的打印程序
💻 HTM
📖 第 1 页 / 共 3 页
字号:
              <TR>
                <TD align=middle background=用JAVA设计面向对象的打印程序.files/bg-gold.gif 
                height=5><A class=nav 
                  href="http://www-900.ibm.com/developerWorks/cn/java/index.shtml"><B>Java 
                  专区中还有:</B></A></TD></TR>
              <TR>
                <TD width=160 bgColor=#666666 height=1><IMG height=1 alt="" 
                  src="用JAVA设计面向对象的打印程序.files/c.gif" width=160></TD></TR>
              <TR>
                <TD align=right>
                  <TABLE cellSpacing=0 cellPadding=3 width="98%" border=0>
                    <TBODY>
                    <TR>
                      <TD><A 
                        href="http://www-900.ibm.com/developerWorks/cn/cnedu.nsf/java-onlinecourse-bytitle?OpenView&amp;Count=500">教学</A></TD></TR>
                    <TR>
                      <TD><A 
                        href="http://www-900.ibm.com/developerWorks/cn/cntools.nsf/dw/java-all-byname?OpenDocument&amp;count=500">工具与产品</A></TD></TR>
                    <TR>
                      <TD><A 
                        href="http://www-900.ibm.com/developerWorks/cn/cntools.nsf/dw/java-beans-bytitle?OpenDocument&amp;count=500">代码与组件</A></TD></TR>
                    <TR>
                      <TD><A 
                        href="http://www-900.ibm.com/developerWorks/cn/cnpapers.nsf/java-papers-bynewest?OpenView&amp;Count=500">所有文章</A></TD></TR>
                    <TR>
                      <TD><A 
                        href="http://www-900.ibm.com/developerWorks/cn/cntips.nsf/java-tips-bydate?OpenView&amp;Count=500">实用技巧</A></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><!-- End Related dW Content Area-->
            <TABLE cellSpacing=0 cellPadding=0 width=160 border=0>
              <TBODY>
              <TR>
                <TD width=150 bgColor=#000000 colSpan=2 height=2><IMG height=2 
                  alt="" src="用JAVA设计面向对象的打印程序.files/c.gif" width=160></TD></TR>
              <TR>
                <TD width=150 bgColor=#ffffff colSpan=2 height=2><IMG height=2 
                  alt="" src="用JAVA设计面向对象的打印程序.files/c.gif" 
              width=160></TD></TR></TBODY></TABLE><!-- END STANDARD SIDEBAR AREA--></TD></TR></TBODY></TABLE>
      <P><A 
      href="http://www-900.ibm.com/developerWorks/cn/java/l-oojavaprint/#author1">张来东</A> 
      (<A 
      href="mailto:zhangld@mail.hf.ah.cn">zhangld@mail.hf.ah.cn</A>)<BR>中国人民银行六安市中心支行<BR>2002 
      年 12 月</P>
      <P>打印程序的编写通常采用结构化的编程的方法,按特定的位置和一定顺序将打印内容送往打印机。在采用JAVA设计打印程序时仍然可采用结构化的方法,但是编写较为麻烦且代码不能重用,不是一种好的方法,给人一种"新瓶老酒"的感觉。目前为数不少的JAVA书籍在介绍打印时,侧重介绍打印功能的实现,而打印用例的主要代码却是结构化的。java网站在介绍java打印功能时,实现打印的代码也是结构化的。</P>
      <P>如果将打印内容进行对象化分析,设计出面向对象的打印程序,则会更出色地完成打印要求,并且代码很容易重用,事半功倍。(本文假定你已经了解java的打印功能)</P>
      <P><A name=1><SPAN class=atitle2>一、打印对象的分析</SPAN></A></P>
      <P>打印通常包含以下基本内容:文字、线条、线框、图像等。比如一个表格是由若干文字、线条和线框对象其组成。为叙述简单,本文仅涉及以下三种对象。</P>
      <P>文字对象的属性:文字内容,坐标,颜色,字体,对齐方式。</P>
      <P>线条对象的属性:起点坐标,终点坐标,颜色,线宽。</P>
      <P>线框对象的属性:左上角坐标,宽度,高度,线宽,颜色。</P>
      <P>这些打印对象必须能根据属性将自己绘制出来。从另一个层面,可将打印的一页内容,理解为这些打印对象的容器。设计打印程序,只需将打印内容分解成适当的对象,由这些打印对象的集合来完成打印的要求。例如:打印普通表格。只需将表格分解成若开线框对象,线条对象,和文字对象。</P>
      <P><A name=2><SPAN class=atitle2>二、打印对象的设计</SPAN></A></P>
      <P>设计思路:根据打印对象的分析,可以将打印的内容看成这些打印对象的集合。实际的打印就是将打印对象集合中的打印对象遍历,调用其print方法,因此这几类打印对象就需要封装相同的打印接口。</P>
      <P><A name=1_1></A><SPAN class=atitle3>1、对象打印接口设计如下:</SPAN></P>
      <P>
      <TABLE cellSpacing=0 cellPadding=5 width="100%" bgColor=#cccccc 
        border=1><TBODY>
        <TR>
          <TD><PRE><CODE>
package lilidb;

import java.awt.Graphics;

/**
*打印对象接口;
*一、文字对象。二、线条对象。三、线框对象。每
*种对象各有其属性,但都必须有print方法。
*/
public interface PrintObject{
    /**
    *打印或预览实际内容
    *@param g   打印或预览的图形对象,根据是预览还是打印传入具体的Graphics对象
    */
    public void print(Graphics g);
}
</CODE></PRE></TD></TR></TBODY></TABLE></P>
      <P><A name=1_2></A><SPAN class=atitle3>2、 文字打印对象的设计</SPAN></P>
      <P>为了叙述的简单,文中的打印对象,未加居中等处理。</P>
      <P>
      <TABLE cellSpacing=0 cellPadding=5 width="100%" bgColor=#cccccc 
        border=1><TBODY>
        <TR>
          <TD><PRE><CODE>
package lilidb;

import java.awt.*;
import java.util.*;

/**
*打印文字对象
**/

public class PrintLabel implements PrintObject{

    String label;
    int px;
    int py;
    Color color = Color.black;
    FontMetrics fm;
    /**
    *构造PrintLabel 对象,
    *@param ls  标签内容。
    *@param x   标签的X坐标
    *@param y   标签的Y坐标
    */
    public PrintLabel(String ls,int x,int y){
      label = ls;
      px = x;
      py = y;
      range = 1;
    }
    /**
    * 设置颜色
    * @para colr  颜色值
    */
    public void setRange(Color colr){
      color = colr;
    }

    /**
    *设置标签字体
    *@param fontn   字体名称
    *@param type    字体类型 可选值为 Font.BOLD,Font.ITALIC,Font.PLAIN
    *@param size    字体象素尺寸
    */
    public void setFont(String fontn,int type,int size){
        font = new Font(fontn,type,size);
    }
    /**
    *设置标签位置
    *@param x   x坐标
    *@param y y坐标
    */
    public void setLabelPosition(int x,int y){
        px = x;
        py = y;
    }
    /**
    *设置标签内容
    *@param ls  标签内容
    */
    public void setLabelString(String ls){
        label = ls;
    }
    /**
    *打印或预览实际内容
    *@param g   打印或预览的图形对象
    */
    public void print(Graphics gg){
        Graphics2D g = (Graphics2D)gg;
        g.setFont(font);
        g.drawString(label, px, py)
        }
    }
}
</CODE></PRE></TD></TR></TBODY></TABLE></P>
      <P><A name=1_3></A><SPAN class=atitle3>3、 线条打印对象的设计</SPAN></P>
      <P>
      <TABLE cellSpacing=0 cellPadding=5 width="100%" bgColor=#cccccc 
        border=1><TBODY>
        <TR>
          <TD><PRE><CODE>
package lilidb;

import java.awt.*;
import java.util.*;
import java.awt.Graphics2D;
import java.awt.Graphics;

/**
*线打印对象
*主要打印线条,其打印位置、和线形可以设置
*/
public class PrintLine implements PrintObject{
    /**
    *线的起点
    */
    int startX;
    int startY;
    /**
    *线的终点
    */
    int endX;
    int endY;
    /**
    *线长
    */
    int lineLong;
    /**
    *线宽
    */
    float lineWidth;
    BasicStroke bs;
    /**
    *构造线对象,确定位置
    *@param sx  线起点X坐标
    *@param sy  线起点Y坐标
    *@param ex  线终点X坐标
    *@param ey  线终点Y坐标
    */
    public PrintLine(int sx,int sy,int ex,int ey){
        startX = sx;
        startY = sy;
        endX = ex;
        endY = ey;
    }
    /**
    *设置线宽
    *@param w   线的宽度
    */
    public void setWidth(float w){
        lineWidth = w;
        bs  = new BasicStroke(lineWidth);
    }
    /**
    *@see PrintObject#print
    */
    public void print(Graphics g){
        Graphics2D g2d = (Graphics2D)g;
        g2d.setStroke(bs);
        g2d.drawLine(startX, startY, endX, endY);
    }
}
</CODE></PRE></TD></TR></TBODY></TABLE></P>
      <P><A name=1_4></A><SPAN class=atitle3>4、线框打印对象的设计</SPAN></P>
      <P>
      <TABLE cellSpacing=0 cellPadding=5 width="100%" bgColor=#cccccc 
        border=1><TBODY>
        <TR>
          <TD><PRE><CODE>
package lilidb;

import java.awt.*;
import java.awt.print.*;
import java.util.*;
/**
*打印矩形对象,矩形对象一般用来组成表格,
*/
public class PrintRectangle implements PrintObject{

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -