JasperReports 6.0.3:不推荐使用JRDesignTextField.setFont和JasperDesign.getFontsMap

时间:2015-06-03 15:05:22

标签: java jasper-reports deprecated

我试图在JasperReign的getFontMap()中使用我在JasperReport的JRDesignTextField对象上设置字体,如下所示:

JRDesignTextField text; // I have this object
JasperDesign jasperDesign; //I have this object from a master jrxml template
text.setFont((JRFont)jasperDesign.getFontsMap().get("ColumnHeadingFont"));

升级到JasperReports 6.0.3,在JRDesignTextField上设置字体并从JasperDesign获取FontMap被标记为"弃用"。 在进行了一些挖掘之后,我做了一些解决方法来调整这个我不确定是正确的代码:

JRDesignTextField text; // I have this object
JasperDesign jasperDesign; //I have this object
text.setFontName("ColumnHeadingFont");
List<JRStyle> stylesList = jasperDesign.getStylesList();
for(JRStyle st : stylesList){
    if("ColumnHeadingFont".equals(st.getFontName()))
    {
        text.setFontSize(st.getFontsize());
        break;
    }
}

所以问题分为两个:

  • 从JasperDesign对象中获取FontMap

  • 在JRDesignTextField上设置字体(我将从FontMap获取)

我提出的解决这个问题的方法是否正确,是否有更好的方法可以做到这一点?

1 个答案:

答案 0 :(得分:0)

所以我提出的解决方案是可行的...从主模板获取样式细节(字体大小)并在设计新模板的textField时使用它。代码如下:

JRDesignTextField text; // This text field is from the new jasper report file
JasperDesign jasperDesign; //This is from master template that has all info

text.setFontName("ColumnHeadingFont");
List<JRStyle> stylesList = jasperDesign.getStylesList();
for(JRStyle st : stylesList){
if("ColumnHeadingFont".equals(st.getFontName()))
{
    text.setFontSize(st.getFontsize());
    break;
}
}