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 的克隆方法,则可以使用克隆。否则,您将不得不复制它(将您的私有 JLabel 的属性复制到您的公共 JLabel)。那么私有JLabel实际上没有用,您可以在if else中实例化一个新的JLabel。它不是复印机,而是工厂(例如 MyJLabelFactory.getJLabel(labelNo) ))

于 2010-06-30T15:56:38.063 回答
1

如果你使用弹簧,你有实用方法;例如,参见BeanUtils.copyProperties

于 2010-06-30T16:24:13.527 回答