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エラー
を?
実はあなたはこのエラーを取得する必要があります'setsetPrintable'が' Printable'を引数として受け入れるため、PrinterJobは引数(Printer)*には適用できません。 –
@Harry Joy単に 'Printable'インターフェースを実装しても、すべての利点はありません。今私はあなたがそれをオーバーライドしていない 'print'メソッドに関するエラーを取得します。 –
インターフェイスをオーバーライドする場合は、すべてのメソッドをオーバーライドする必要があります。 –