从Jasperstudio触发Java

从Jasperstudio触发Java,java,jasper-reports,Java,Jasper Reports,我有以下Java代码,它将通过修改JRXML来修改矩形的宽度。但是,当报表运行时,如何调用Java代码?Scriptlet帮不了什么忙。有没有办法在studio中调用Java/jar文件来动态更改文本对象的宽度 public class widthAdjust { public static void main(String[] args) { JasperDesign design; try { design = JRXmlLoader.load("C:\\G

我有以下Java代码,它将通过修改JRXML来修改矩形的宽度。但是,当报表运行时,如何调用Java代码?Scriptlet帮不了什么忙。有没有办法在studio中调用Java/jar文件来动态更改文本对象的宽度

public class widthAdjust {

public static void main(String[] args) {
    JasperDesign design;
    try {
        design = JRXmlLoader.load("C:\\GanttChart_Java.jrxml");
    System.out.println(design);
    JRField[] fields = design.getFields();
    JRVariable[] variables =  design.getVariables();

    int newWidth = 100;
    int newX = 100;
    JRDesignBand baseBand = (JRDesignBand) design.getSummary();
    JRElement[] elements = baseBand.getElements();
    System.out.println(elements);
    for (int counter = 0; counter < elements.length; counter++) {
        JRDesignElement element = (JRDesignElement) elements[counter];
            element.setWidth(newWidth);
            element.setX(newX);
    }
    JasperCompileManager.compileReportToFile(design,"C:\\GanttChart_Java.jasper");
    JasperCompileManager.writeReportToXmlFile("C:\\GanttChart_Java.jasper","C:\\GanttChart_Java.jrxml");
    JasperCompileManager.compileReport("C:\\GanttChart_Java.jrxml");
} catch (JRException e) {
    e.printStackTrace();
}}}
公共类宽度调整{
公共静态void main(字符串[]args){
茉莉花设计;
试一试{
design=jrxmloader.load(“C:\\GanttChart\u Java.jrxml”);
系统输出打印(设计);
JRField[]fields=design.getFields();
jrviable[]variables=design.getVariables();
int newWidth=100;
int newX=100;
JRDesignBand基带=(JRDesignBand)design.getSummary();
jrelelement[]elements=baseBand.getElements();
系统输出打印项次(元素);
for(int counter=0;counter
要更改元素的属性,最好的方法是运行Java代码并使用Jasper API


另一方面,从.jasper报告中调用Java代码(据我所知)是不可能的,因为jasper文件已经是一个具有特定宽度的编译报告

要更改元素的属性,最好的方法是运行Java代码并使用Jasper API


另一方面,从.jasper报告中调用Java代码(据我所知)是不可能的,因为jasper文件已经是一个具有特定宽度的编译报告

固定代码和拼写固定代码和拼写