首先 来看看效果 如下图
为吉林等地区用户提供了全套网页设计制作服务,及吉林网站建设行业解决方案。主营业务为成都网站制作、做网站、吉林网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
代码如下
PrintTest java
import java awt BasicStroke;
import java awt Color;
import java awt Font;
import java awt Graphics;
import java awt Graphics D;
import java awt print Book;
import java awt print PageFormat;
import java awt print Paper;
import java awt print Printable;
import java awt print PrinterException;
import java awt print PrinterJob;
import java text SimpleDateFormat;
import java util Date;
import snjp model RentDetail;
import snjp parameter RentRecordParameter;
public class PrintTest implements Printable
{
private String roomID;
private Date printDate;
private Integer rentType;
private Float waterFee;
private Float electricityFee;
private Float rent;
private String remark;
private static int RECEIPT_NO = ;
public PrintTest()
{
}
public PrintTest printTest;
public PrintTest(RentRecordParameter prentRecord RentDetail prentDetail)
{
this roomID = prentRecord getRoomId()+ 房间 ;
this printDate = prentRecord getRegisterDate();
this rentType = prentRecord getRentType();
this waterFee = prentDetail getWaterBill();
this electricityFee = prentDetail getElectricityBill();
this rent = prentDetail getRent();
this remark = prentDetail getRemark();
}
/** */
/**
* @param Graphic指明打印的图形环境
* @param PageFormat指明打印页格式(页面大小以点为计量单位 点为 英才的 / 英寸为 毫米 A 纸大致为 × 点)
* @param pageIndex指明页号
**/
public int print(Graphics graphics PageFormat pf int pageIndex)
throws PrinterException
{
//print string
String receiptTitle = 收款收据 ;
String content = 今收到 ;
String feeItem = null;
Float rentTotal = f;
String content = 总计人民币(大写) ;
//收款的内容(根据租赁类型 只有 房租 房租 水费 电费 两种值)
switch(this rentType)
{
case :
feeItem = 房租 押金 ;
rentTotal=this rent;
break;
case :
feeItem = 房租 押金 水费 电费 ;
rentTotal=this rent+this electricityFee+this waterFee;
break;
default:
feeItem = 未知收费项目 ;
}
//转换成Graphics D
Graphics D graphics D = (Graphics D) graphics;
//设置打印颜色为黑色
graphics D setColor(Color black);
//打印起点坐标x=
double x = pf getImageableX();
double y = pf getImageableY();
System out println( 打印起点坐标值是{ +x+ +y+ } );
switch (pageIndex)
{
case :
//设置打印字体(字体名称 样式和点大小)(字体名称可以是物理或者逻辑名称)
//Java平台所定义的五种字体系列 Serif SansSerif Monospaced Dialog 和 DialogInput
Font font = new Font( 新宋体 Font TRUETYPE_FONT );
graphics D setFont(font);//设置字体
BasicStroke basicStroke=new BasicStroke( f);
float[] dash = { f };
//设置打印线的属性
// 线宽; ; ; 空白的宽度; 虚线的宽度; 偏移量
// graphics D setStroke(new BasicStroke( f
// BasicStroke CAP_BUTT BasicStroke JOIN_MITER
// f dash f));
//graphics D setStroke(new BasicStroke( f));
graphics D setStroke(basicStroke);//设置线宽
float height = font getSize D();//字体高度
System out println( 字体高度是 +height);
//绘制收据标题
graphics D drawString(receiptTitle (float) y + * height);
//绘制收据编号
String receiptNo = String valueOf(RECEIPT_NO);
graphics D drawString( No : +GlobalMethod get String(receiptNo ) (float)x* (float) y + * height);
//绘制打印时间
SimpleDateFormat myDateFormat = new SimpleDateFormat( yyyy年MM月dd日 );
graphics D drawString(myDateFormat format(printDate) (float)x* (float) y + * height);
//绘制收据标题下面的第一条横线
graphics D drawLine(
(int) (y + * height+ )
(int) (y + * height+ )
);
//绘制收据标题下面的第二条横线
graphics D drawLine(
(int) (y + * height+ )
(int) (y + * height+ )
);
//正文 ——今收到
graphics D drawString(content (float) x* (float) y + * height);
//收费项目名称
graphics D drawString(this roomID+feeItem (float) x* (float) y + * height);
//绘制正文 下划线
graphics D drawLine(
(int)x*
(int) (y + * height+ )
(int)x+
(int) (y + * height+ )
);
//人民币(大写)
graphics D drawString(content +Money NumToRMBStr(rentTotal) (float) x* (float) y + * height);
//绘制人民币(大写)下划线
graphics D drawLine(
(int)x*
(int) (y + * height+ )
(int)x+
(int) (y + * height+ )
);
//(小写)
graphics D drawString( (小写) +rentTotal+ 元 (float) x* (float) y + * height);
//绘制(小写)下划线
graphics D drawLine(
(int)x*
(int) (y + * height+ )
(int)x+
(int) (y + * height+ )
);
//附注
graphics D drawString( 附注: +this remark (float) x* (float) y + * height);
//绘制附注下划线
graphics D drawLine(
(int)x* +
(int) (y + * height+ )
(int)x+
(int) (y + * height+ )
);
// 签字(收款人)
graphics D drawString( 签字(收款人) (float) x* + (float) y + * height);
//签字(收款人)下划线
graphics D drawLine(
(int)x*
(int) (y + * height+ )
(int)x+
(int) (y + * height+ )
);
return PAGE_EXISTS;
default:
RECEIPT_NO=RECEIPT_NO ;
return NO_SUCH_PAGE;
}
}
//方法调用
public void printReceipt(PrintTest printTest){
//通俗理解就是书 文档
Book book = new Book();
//设置成竖打
PageFormat pf = new PageFormat();
pf setOrientation(PageFormat PORTRAIT);
//通过Paper设置页面的空白边距和可打印区域 必须与实际打印纸张大小相符
Paper p = new Paper();
p setSize( );//纸张大小
p setImageableArea( );//A ( X )设置打印区域 其实 应该是 因为A 纸的默认X Y边距是
pf setPaper(p);
//把 PageFormat 和 Printable 添加到书中 组成一个页面
book append(printTest pf);
//获取打印服务对象
PrinterJob job = PrinterJob getPrinterJob();
//设置打印类
job setPageable(book);
try
{
//可以用printDialog显示打印对话框 在用户确认后打印 也可以直接打印
// boolean isShowing=job printDialog();
// if(isShowing)
// {
// System out println(this printDate+ ************* );
RECEIPT_NO=RECEIPT_NO+ ;
job print();
// }
}
catch (PrinterException e)
{
e printStackTrace();
}
}
public static void main(String[] args)
{
// 通俗理解就是书 文档
Book book = new Book();
// 设置成竖打
PageFormat pf = new PageFormat();
pf setOrientation(PageFormat PORTRAIT);
// 通过Paper设置页面的空白边距和可打印区域 必须与实际打印纸张大小相符
Paper p = new Paper();
p setSize( );//纸张大小
p setImageableArea( );//A ( X )设置打印区域 其实 应该是 因为A 纸的默认X Y边距是
pf setPaper(p);
// 把 PageFormat 和 Printable 添加到书中 组成一个页面
book append(new PrintTest() pf);
//获取打印服务对象
PrinterJob job = PrinterJob getPrinterJob();
// 设置打印类
job setPageable(book);
try
{
//可以用printDialog显示打印对话框 在用户确认后打印 也可以直接打印
//boolean a=job printDialog();
//if(a)
//{
job print();
//}
}
catch (PrinterException e)
{
e printStackTrace();
}
}
lishixinzhi/Article/program/Java/hx/201311/25778
可以的,我说说大概思路,很简单,你自己具体实现吧,把代码写给你没意义的:
1.将你这段字符串输出到一个文件里,用Java类文件的方式命名。
2.调用外部javac命令将该文件编译。
3.用类加载器(ClassLoad)动态加载新的class文件并用Class.forName()注册该类,然后就可以正常使用了。
上面的每一步都能在baidu中找到实现方法,自己发挥吧。
下面有几种方法:
方法一:生成asm文件
1)VS2005:
项目 ---》属性 ---》 配置属性 ---》 c/c++ ---》 输出文件 ---》 右边内容项:汇编输出 ---》带源代码的程序集(/FAs )。
这样在项目里面生成后缀为*.asm 的文件。里面还有注释,有利于分析。
要得到汇编代码与源代码的对应,设置选项:
2)VC6.0:
project settings:
--- C++
--- category == Listing files
---Listing file type == Assembly with source code
方法二:使用反汇编方式(推荐使用这种方法,在debug的时候使用)
1)VC6.0在进行断点调试的时候,进行以下步骤:
点击“查看”
“调试窗口”
“Disassably”
即可查看到反汇编的结果
2)VS2005在进行断点调试的时候,进行以下步骤:
点击“调试”
“窗口”
“反汇编”
查看java就直接用javap -v 类文件.class 即可。详细内容可以参考 jvm虚拟机