java - 如何设置 JRViewer 导出选项?

标签 java swing jasper-reports

最近我用最新的 jasper-reports 库更新了我的项目。 有一个新的 JRViewer 类 (net.sf.jasperreports.swing) 取代了旧的 (net.sf.jasperreports.view)。现在我不知道如何设置导出选项。旧代码是这样的:

JRPdfSaveContributor pdf = new JRPdfSaveContributor(locale, resBundle);
JRRtfSaveContributor rtf = new JRRtfSaveContributor(locale, resBundle);
JRSingleSheetXlsSaveContributor xls = new JRSingleSheetXlsSaveContributor(locale, resBundle);
JRDocxSaveContributor docx = new JRDocxSaveContributor(locale, resBundle);
viewer.setSaveContributors(new JRSaveContributor[] { pdf, rtf, xls, docx });

最佳答案

您必须扩展 net.sf.jasperreports.swing.JRViewer 并将导出贡献者设置为 JRViewerToolbar。像这样:

public class MyJRViewer extends JRViewer {
    //define the constructor that you use
    public MyJRViewer(JasperPrint jasperPrint) {
        super(jasperPrint);
    }

    @Override
    protected JRViewerToolbar createToolbar() {
        JRViewerToolbar toolbar = super.createToolbar();

        Locale locale = viewerContext.getLocale();
        ResourceBundle resBundle = viewerContext.getResourceBundle();
        JRPdfSaveContributor pdf = new JRPdfSaveContributor(locale, resBundle);
        JRRtfSaveContributor rtf = new JRRtfSaveContributor(locale, resBundle);
        JRSingleSheetXlsSaveContributor xls = new JRSingleSheetXlsSaveContributor(locale, resBundle);
        JRDocxSaveContributor docx = new JRDocxSaveContributor(locale, resBundle);
        toolbar.setSaveContributors(new JRSaveContributor[] {pdf, rtf, xls, docx});

        return toolbar;
    }   
}

关于java - 如何设置 JRViewer 导出选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47349042/

相关文章:

java - 需要使用 setter 和 getter 的帮助

java - 无法从SwingWorker类获取JProgressBar进行更新

java - 如何在java中以相同的方式对两个列表进行洗牌?

java - 我希望我的应用程序在关闭之前执行某些操作

java - 使用 super csv 通过 Java 写回 csv

java - JTable 中每一列都有唯一的 JMenu

java - 在 Windows 的系统托盘中隐藏我的程序

jasper-reports - 如何在 Jaspersoft Studio 中传递数组/集合类型的参数并在查询时使用它?

sql - 在jasperreport中传递SQL "IN"参数列表

jasper-reports - Jasper 报告 - 仅当至少有一个细节适合页面时才打印组标题