みなさん、こんにちは。今、私は深刻な問題に直面しています。Java プログラムを作成しましたが、このプログラムの JFrame の 1 つを印刷する必要があります。しかし、私はそれを行うことはできません。私はウェブで検索しましたが、見つけたコードは最初の要素のみを出力します。これは、1 つの要素が JLabel または JTextBox である可能性があることを意味します。しかし、すべてのデータを含むページ全体を印刷する必要があります。
誰でも私を助けてもらえますか?
ありがとう
このコードをクラスに添付します。これがあなたを助けることを願っています
まず、Java クラスに Printable インターフェースを実装します。
class ClassName extends JFrame implements Printable
{
//your code goes here
}
Printable インターフェースを実装した後、メソッド print() をオーバーライドします
public int print(Graphics g, PageFormat pf, int page) throws PrinterException {
if (page > 0) {
return NO_SUCH_PAGE;
}
Graphics2D g2d = (Graphics2D) g;
g2d.translate(pf.getImageableX(), pf.getImageableY());
//Give the component to be printed here...
System.out.println("Successfully printed");
return PAGE_EXISTS;
}
次に、何を印刷するかを決定します。すべてのコンポーネントが 1 つの親 JPanel (parentPanel) 上になければならないような方法でコードを記述します。コメントの横にある上記のコードでは、parentPanel.print(g)
これにより、そのparentPanelのすべてのコンポーネントが出力されます。
ここで、何を印刷するかを Java プログラムに指示しましたが、この印刷ジョブを完了するには、PrinterJob を作成する必要があります。
PrinterJob job = PrinterJob.getPrinterJob();
job.setPrintable(this);
boolean ok = job.printDialog();
if (ok) {
try {
job.print();
} catch (PrinterException ex) {
System.out.println(ex);
}
}
このコードを印刷ボタンの ActionListener に配置します。