boolean如何在这里变为false

时间:2011-07-06 10:27:05

标签: java printing

这是打印按钮的动作监听器

public void hookUpEvents() {
 print.addActionListener( new ActionListener() {
   public void actionPerformed( ActionEvent ae ) {
      PrinterJob job = PrinterJob.getPrinterJob();
      job.setPrintable( new Printer() );
      boolean doPrint = job.printDialog();  // boolean variable
       if( doPrint ) {
           try {
            job.print();
           }  catch( PrinterException exc) {
                System.out.println( exc );
              }
       }  else {
            System.out.println("You cancelled the print");
          } 
   }
});

}

当我将此代码段与整个代码一起编译时,会显示打印按钮。以上是打印按钮的动作监听器。

当我点击打印按钮时,会显示以下对话框:

enter image description here

3-4秒后自动您取消了打印,显示在cmd上。 这是怎么发生的?当我点击取消时,不会显示任何内容。 语句job.printDialog();如何自行返回false?

complete code

// Program to print simple text on a Printer

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.print.PrinterException;
import java.awt.print.*;


class Printer extends JPanel implements Printable  {

JButton print;

 Printer() {
  buildGUI();
  hookUpEvents();
}


public void buildGUI() {
  JFrame fr = new JFrame("Program to Print on a Printer");
  JPanel p = new JPanel();
  print = new JButton("Print");
  p.setBackground( Color.black );
  fr.add(p);
  p.add( print , BorderLayout.CENTER );
  this.setPreferredSize( new Dimension ( 300,200 ) );
  fr.pack();
  fr.setVisible( true );

}

public void hookUpEvents() {
 print.addActionListener( new ActionListener() {
   public void actionPerformed( ActionEvent ae ) {
      PrinterJob job = PrinterJob.getPrinterJob();
      job.setPrintable( Printer.this );
      boolean doPrint = job.printDialog();
//  PageFormat pf = job.pageDialog(job.defaultPage());
       if( doPrint ) {
           try {
            job.print();
           }  catch( PrinterException exc) {
                System.out.println( exc );
              }
       }  else {
            System.out.println("You cancelled the print");
          } 
   }
 });
 }

 public int print( Graphics g , PageFormat pf , int pageIndex) throws PrinterException{
   return PAGE_EXISTS;
 }

public static void main( String args[] ) {
   new Printer();
}

}

1 个答案:

答案 0 :(得分:0)

根据API,打印对话框由操作系统而不是JVM处理,所以我不会完全惊讶不同设置的不同人可能会有不同的结果。我建议您尝试使用实际打印机运行它,看看会发生什么。