我象在屏幕上画一条线,然后打印到A4纸上,用尺去量A4纸上的线段,是1cm,怎么办?

解决方案 »

  1.   

    刚好我做完了这个调查项目:代码给你送上:package doline;import java.applet.Applet;
    import java.awt.*;
    import javax.swing.JOptionPane;
    import java.awt.event.*;
    import java.awt.print.*;
    public class DoLine extends Applet 
    implements ActionListener, Printable {
    int intSize;
    int intDu;
    int intBit;
    int intX;
    int intY;
    Point pBegin;
    Point pEnd;
    Button button1;

    double intTemp;
    public void init(){  
    intSize=Integer.parseInt(JOptionPane.showInputDialog("長度を入力してください:"));
    intDu=Integer.parseInt(JOptionPane.showInputDialog("角度を入力してください:")); 
    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);
    pBegin=new Point(10,10);
    pEnd = new Point(10+intX,10+intY);
    button1 = new Button("印刷");
    add(button1);
    button1.addActionListener((ActionListener) this);
    }

    public void paint(Graphics g){
    g.drawLine(pBegin.x ,pBegin.y ,pEnd.x,pEnd.y); }    public void actionPerformed(ActionEvent e){
         if (e.getSource()==button1)
         {
    printSelf();
         }
        }
         public  void printSelf() {
    // PrinterJobを取得する 
    PrinterJob printerJob = PrinterJob.getPrinterJob();
    // プリンタダイアログを表示して、印刷ボタンが押された場合
    if (printerJob.printDialog()) { try {
    // Printableオブジェクトを設定する
    printerJob.setPrintable(this);
    // 印刷する
    printerJob.print();
    }
    catch (PrinterException e) {
    e.printStackTrace();
    }
    }
    } public int print(Graphics g, PageFormat pf, int pageIndex) { // 最初のページの場合
    if (pageIndex == 0) {
    /** 印刷先の Graphicsを Graphics2D としてキャスト */
    Graphics2D g2d = (Graphics2D)g;
    // 原点を印刷可能な範囲に移動
    g2d.translate(pf.getImageableX(), pf.getImageableY()); 
    // 描画色の設定
    g2d.setColor(Color.black);
    g2d.drawLine(pBegin.x ,pBegin.y ,pEnd.x,pEnd.y);
    // 印刷を続行
    return Printable.PAGE_EXISTS;
    }
    // 2ページ目以降の場合
    else {
    // 印刷終了
    return Printable.NO_SUCH_PAGE;
    }
    }
    }