2011-07-06 33 views
1
// 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"); 
    setPreferredSize(new Dimension (200,200)); 
    p.setBackground(Color.black); 
    fr.add(p); 
    p.add(print , BorderLayout.CENTER); 
    fr.pack(); 
    fr.setVisible(true); 
} 

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

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

私は、コードをコンパイルすると、私は次のエラーを取得:私はこのエラーを修正するにはどうすればよいこのエラーを修正するにはどうすればよいですか?

Printer.java:9: Printer is not abstract and does not override abstract method print(Graphics,PageFormat,int) in Printable 
class Printer extends JPanel implements Printable { 

^ 1エラー

を?

+0

実はあなたはこのエラーを取得する必要があります'setsetPrintable'が' Printable'を引数として受け入れるため、PrinterJobは引数(Printer)*には適用できません。 –

+0

@Harry Joy単に 'Printable'インターフェースを実装しても、すべての利点はありません。今私はあなたがそれをオーバーライドしていない 'print'メソッドに関するエラーを取得します。 –

+0

インターフェイスをオーバーライドする場合は、すべてのメソッドをオーバーライドする必要があります。 –

答えて

2

@Suhail:私はあなたが印刷可能なintefaceを実装する必要があると思います: -

class Printer extends JPanel implements java.awt.print.Printable 

をしてメソッドを追加: - :「*メソッドのsetPrintableは(印刷用)

public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) 
関連する問題