import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Point;
import javax.swing.JOptionPane;public class DoLine extends Applet {
int intSize;
int intDu;
int intBit;
int intX;
int intY;
Point pBegin;
Point pEnd;
double intTemp;
public void init()
{  
intSize=Integer.parseInt(JOptionPane.showInputDialog("请输入长度(mm):"));
intDu=Integer.parseInt(JOptionPane.showInputDialog("请输入角度(度):")); 
pBegin=new Point(10,10);
intBit =(int)Math.round(72/25.4*intSize);
intX = (int)Math.round(Math.cos(intDu* 3.1415926/180)*intBit);
intY = (int)Math.round(Math.sin(intDu* 3.1415926/180)*intBit);
pEnd = new Point(10+intX,10+intY);
}
public void paint(Graphics g)
{
g.drawLine(pBegin.x ,pBegin.y ,pEnd.x,pEnd.y);
g.drawString("Total Length : "+ intSize,pBegin.x,pEnd.y+20);
g.drawString("First Point : "+ pBegin.toString(),pBegin.x,pEnd.y+40);
g.drawString("End Point : "+ pEnd.toString(),pBegin.x,pEnd.y+60);
}
}
我想把g.drawLine直接打印出来,不出现打印机的设置对话框,打印属性为默认的,打印开始的时间和找印结束的时间。哪位兄弟帮帮我?

解决方案 »

  1.   


    package doline;import java.applet.Applet;
    import java.awt.Point;
    import javax.swing.JOptionPane;
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.print.PageFormat;
    import java.awt.print.Printable;
    import java.awt.print.PrinterException;
    import java.awt.print.PrinterJob;public class DoLine extends Applet {
    int intSize;
    int intDu;
    int intBit;
    int intX;
    int intY;
    Point pBegin;
    Point pEnd;
    double intTemp;
    public void init(){  
    intSize=Integer.parseInt(JOptionPane.showInputDialog("长度:"));
    intDu=Integer.parseInt(JOptionPane.showInputDialog("角度:")); 
    pBegin=new Point(10,10);
    intBit =(int)Math.round(72/25.4*intSize);
    intX = (int)Math.round(Math.cos(intDu* 3.1415926/180)*intBit);
    intY = (int)Math.round(Math.sin(intDu* 3.1415926/180)*intBit);
    pEnd = new Point(10+intX,10+intY);
    }

    public void paint(Graphics g){
    g.drawLine(pBegin.x ,pBegin.y ,pEnd.x,pEnd.y);
    DoLine dl = new DoLine();
    dl.printSelf(g);
    }
    public  void printSelf(Graphics g) {
    PrinterJob printerJob = PrinterJob.getPrinterJob(); if (printerJob.printDialog()) { try {
    printerJob.setPrintable((Printable) this);
    printerJob.print();
    }
    catch (PrinterException e) {
    e.printStackTrace();
    }
    }
    } public int print(Graphics g, PageFormat pf, int pageIndex) {
    if (pageIndex == 0) {
    Graphics2D g2d = (Graphics2D)g;
    g2d.translate(pf.getImageableX(), pf.getImageableY());  g2d.setColor(Color.black);
    g2d.drawString("page   : " + pageIndex, 100, 100);
    g2d.drawString("width  : " + pf.getWidth(), 100, 130);
    g2d.drawString("height : " + pf.getHeight(), 100, 160); g2d.drawString("iWidth : " + pf.getImageableWidth(), 100, 200);
    g2d.drawString("iHeight: " + pf.getImageableHeight(), 100, 230);
    g2d.drawString("clip   : " + g.getClipBounds().toString(), 100, 270);
    g2d.drawString("orient : " + pf.getOrientation(), 100, 310); return Printable.PAGE_EXISTS;
    } else {
    return Printable.NO_SUCH_PAGE;
    }
    }
    }为什么打印机设置,总是在最前面?
    如何让打印机打印paint里的直线?