2

みなさん、こんにちは。今、私は深刻な問題に直面しています。Java プログラムを作成しましたが、このプログラムの JFrame の 1 つを印刷する必要があります。しかし、私はそれを行うことはできません。私はウェブで検索しましたが、見つけたコードは最初の要素のみを出力します。これは、1 つの要素が JLabel または JTextBox である可能性があることを意味します。しかし、すべてのデータを含むページ全体を印刷する必要があります。

誰でも私を助けてもらえますか?

ありがとう

4

1 に答える 1

1

このコードをクラスに添付します。これがあなたを助けることを願っています

まず、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 に配置します。

于 2013-05-27T08:38:34.370 に答える