2011-05-12 14 views
1

私は、メインレポートにロゴを追加するには、サブレポートを含むレポートがあります。このサブレポートには、2つの異なるサイズのロゴをサポートする2つの詳細バンドがあります。 1つは長く、もう1つは長さ(幅)の約3倍です。種類のこのような...期間の第1及び第2行の間を隠す複数の詳細バンドが

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

詳細1バンドであり、2番目と3番目の間詳細2バンドです。

$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}は "acompanyname" です。

レポートを実行するたびに詳細2のバンドが表示されます。私は詳細1を表示することができず、エラーメッセージも表示されません。

助けを歓迎します。

答えて

0

はこのお試しくださいありがとう:Javaの、等価演算子(==)で

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

を、オブジェクトに使用する場合、彼らは同じオブジェクトに同じ参照されているかどうかを確認します。これは、多くのJavaプログラミング経験なしに、すべてのレポート開発者を受け入れます。あなたが書くことができる:あなたが期待するよう等号演算子のいずれかの側の両方のオブジェクトが同じであるため、trueを返します

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

。次の点を考慮

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演算は、値ではなく参照を比較します。

+0

デイブ、後半に受け入れられたの応答と気の毒に感謝。私はコードを削除して終了し、ちょうどロゴの1つのバンドをしました。私はあなたが比較されている参照についてあなたが何を意味するかを見て、私はそれを頭の中で念頭に置いておくつもりです。 – cjoki

関連する問題