这是打印按钮的动作监听器
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");
}
}
});
}
当我将此代码段与整个代码一起编译时,会显示打印按钮。以上是打印按钮的动作监听器。
当我点击打印按钮时,会显示以下对话框:
3-4秒后自动您取消了打印,显示在cmd上。
这是怎么发生的?当我点击取消时,不会显示任何内容。
语句job.printDialog();
如何自行返回false?
// 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();
}
}
答案 0 :(得分:0)
根据API,打印对话框由操作系统而不是JVM处理,所以我不会完全惊讶不同设置的不同人可能会有不同的结果。我建议您尝试使用实际打印机运行它,看看会发生什么。