隐藏多个细节带

时间:2011-05-12 20:28:35

标签: jasper-reports ireport

我有一个带子报告的报告,可以在主报告中添加徽标。在这个子报告中,我有2个细节带来支持两个不同大小的徽标;一个是长的,另一个是大约3长(宽)。有点像......

...........................
|---------logo------------|
address 1, address 2
...........................
|__logo__|    address 1
|        |    address 2
...........................

第1行和第2行之间是详情1 频段,第2和第3行之间是详情2 频段。

我正在尝试使用“Print When Expression”来根据$F{LogoName}的值切换第1或第2个细节带。

详情1 乐队:

new Boolean($F{LogoName}=="acompanyname")

明细2 乐队:

new Boolean($F{LogoName}!="acompanyname")

但它不起作用。

也试过这些:

(($F{LogoName}=="acompanyname")?Boolean.TRUE:Boolean.FALSE)
(($F{LogoName}!="acompanyname")?Boolean.TRUE:Boolean.FALSE)

$F{LogoName}是“公司名称”。

每次运行报告时,只会显示详细信息2 频段。我无法获得详细信息1以显示任何错误信息。

欢迎任何帮助。

谢谢

1 个答案:

答案 0 :(得分:0)

试试这个:

$F{LogoName}.equals( "acompanyname" )

在Java中,等于运算符(==)在对象上使用时,会检查它们是否与同一对象的引用相同。这一点可以捕获所有没有大量Java编程经验的报表开发人员。你可以写:

$F{LogoName} == $F{LogoName}

这将返回true,正如您所期望的那样,因为equals运算符两侧的两个对象都是相同的。请考虑以下事项:

public class T { 
  public static void main( String args[] ) {                                    
    String s1 = "hello";                                                        
    String s2 = (new StringBuilder( s1 )).toString();                           

    System.out.println( s1 );
    System.out.println( s2 );
    System.out.println( s1 == s2 );
  }
}

打印:

hello
hello
false

字符串对象的是相同的,但字符串的引用是不同的。 equals操作比较引用,而不是值。