0

我正在使用 JFreechart API 来生成“条形图”。我可以保存它们,但是如何通过 Java GUI 应用程序从打印机打印它们?

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 回答