Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

プリントダイアログが表示されません

javaの印刷機能を勉強中のものです
プリントダイアログを表示後、印刷の実行をしたいのですが
System.out.println("Canceled");
System.exit(0);
を実行して終了してしまいます。
どこが悪いのかわりません。
どなたかご教授をお願いいたします。
また
if (job.printDialog()==false) 
とすると印刷ができます。

コードは以下のようになっています

import java.awt.*; 
import java.awt.print.*;
class Cood33 implements Printable 
{   

  private static Font fnt = new Font("Helvetica",Font.PLAIN,24);


  public static void main(String[] args) 
  {     
        
    PrinterJob job = PrinterJob.getPrinterJob ();     
 
    job.setPrintable(new Cood33());  
   
      
 if (job.printDialog()) 
  {     
    
      try { job.print(); }
      catch (PrinterException e)
        { System.err.println(e);}
  }     
    System.out.println("Canceled");
    System.exit(0);   
  }


  public int print(Graphics g, PageFormat pf, int pageIndex)
  throws PrinterException 
  {     
  
    if (pageIndex >= 2) return Printable.NO_SUCH_PAGE;   
    g.setFont(fnt);       
    g.drawString("Page " + (pageIndex+1), 100, 100);     
    return Printable.PAGE_EXISTS;   
  } 
}

6

回答

2736

閲覧

6件の回答

評価

0

提示されているコードで動作しますよ。

>どこが悪いのかわりません。
逆に質問すると、どこが問題なのでしょう?
期待する動作は何で、実際の挙動がどうなのですか?

評価

0

getPrinterJobの後ろに全角スペースがあるようですが、それはさておき。
こちらでも動作確認できました。プリントダイアログも出てきます。

評価

0

回答ありがとうございました。パソコンがおかしいのかもしれません。別のパソコンで試してみたいと思います。

評価

0

別のパソコンでこのプログラムを実行したところプリントダイアログが表示され、印刷が実行されました。こんなことがあるんだということを実感しました。皆さんの
回答がなかったら連休中ず〜と悩んでいるところでした。ありがとうございました。

評価

0

元のパソコンでもプログラムが実行できました。原因は
プリンタドライバがXP対応ではなかったためのようです。ドライバを再インストールすることで解決しました。

評価

0

解決したことは良かったですが…。
「対応ではなかった」というのは、ドライバのバージョン等調査した結果なのでしょうか?
「非対応」とは言っても、単に「確認していない」や「一部で問題がある」ということもあります。
完全に動作しないなら、他のアプリケーションからの印刷も、できなかったはずです。

Javaの印刷ジョブはWindowsの機能を使っているのだから、他で印刷できていたなら、印刷できるはずです。
近いバージョンのドライバを再インストールして動作したのなら(プリンタだと結構あります)、それは対応の問題ではなく、なにか設定等がおかしくなっていたのでしょう。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。