2011-07-06 60 views
0

成爲虛假這是打印按鈕如何布爾這裏對自己

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(); 
} 

}

+0

當我編譯並運行它時,按預期工作... –

+0

@ Oli Charlesworth它顯示else語句,如果我半分鐘內不做任何事情 –

+0

我在運行代碼時沒有看到這種行爲。 –

回答

0

%的API,打印對話框是由操作系統,而不是JVM處理,所以我並不完全感到驚訝不同人羣的不同人可能會有不同的結果。我建議你試着用真正的打印機來運行它,看看會發生什麼。

+0

同意。然而,在評論中,OP表示他通過簡單的消息對話獲得了類似的行爲。這導致我相信這裏發生了一些非常奇怪的事情。 –