0

I am using JFreechart API to produce "Barchart". I am able to save them, but how to print them from the printer from Java GUI application?

4

1 に答える 1

2

コードで次のスニペットを使用します。IStatisticsGraph統計を作成するための私自身のインターフェースなので、これは重要ではありません。私のメイン GUI には、この関数を呼び出す印刷ボタンがあります。

public class StatisticPage
    implements Printable
{
    private ChartPanel mChart = null;

    public StatisticPage(ChartPanel oChart)
    {
        mChart = oChart; 
    }

    public int print(Graphics g, PageFormat format, int pageIndex)
    {
        if(mChart == null)
            return Printable.NO_SUCH_PAGE;

        return mChart.print(g, format, pageIndex);
    }
}

MainGUI で:

private void onPrint()
{
    try
    {
        Object o = mStatisticSelectorBox.getSelectedItem();
        if(o == null)
            return;

        IStatisticGraph gr = (IStatisticGraph)o;
        StatisticPage page = gr.getPage();
        if(page == null)
            return;

        PrinterJob prt = PrinterJob.getPrinterJob();

        PageFormat pf0 = prt.defaultPage();
        PageFormat pf1;
        pf0.setOrientation(PageFormat.LANDSCAPE);
        pf1 = prt.pageDialog(pf0);
        if(pf1.equals(pf0) == true)
            return;

        Book book = new Book();
        book.append(page, pf1);
        prt.setPageable(book);

        try
        {
            prt.print();
        }
        catch (PrinterException exception)
        {
        }
    }
    catch(Throwable e)
    {
        showError(e.getClass().getCanonicalName(), e.getLocalizedMessage(), e);
    }
}
于 2013-07-10T08:17:04.683 に答える