0

プライベートjlabelオブジェクトを新しいjlabelオブジェクトにコピーして、新しいオブジェクトを公開したいと思います。アイデアは、誰でもjlabelのプロパティにアクセスできるようにすることですが、元のインターフェイスに表示される変更は許可しないことです。以下のコードは、元のオブジェクトの参照をコピーするだけなので機能しません。

public javax.swing.JLabel getCopyOfLabel(int labelno) {
    javax.swing.JLabel newlbl = new javax.swing.JLabel();
    if (labelno == 0) {
        newlbl = lbl_0_original;
        return newlbl;
    } else if (labelno == 1) {
        newlbl = lbl_1_original;
        return newlbl;
    } else {
        newlbl = lbl_2_original;
        return newlbl;
    }
}

どうすれば思い通りにできますか?これにclone()を使用できますか?

ありがとうございました

4

2 に答える 2

1

JLabelのcloneメソッドが実装されている場合は、cloneを使用できます。それ以外の場合は、複製する必要があります(プライベートJLabelのプロパティをパブリックJLabelにコピーします)。その場合、実際にはプライベートJLabelは使用されません。それ以外の場合は、新しいJLabelをインスタンス化できます。その場合はコピー機ではなくファクトリです(例:MyJLabelFactory.getJLabel(labelNo)))

于 2010-06-30T15:56:38.063 に答える
1

スプリングを使用する場合は、そのためのユーティリティメソッドがあります; たとえば、 BeanUtils.copyPropertiesを参照してください。

于 2010-06-30T16:24:13.527 に答える