我想将我的私有jlabel对象复制到一个新的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()吗?
谢谢
答案 0 :(得分:1)
如果实现了JLabel的克隆方法,则可以使用clone。否则你将不得不复制它(将私有JLabel的属性复制到你的公共JLabel)。 然后实际上没有用于私有JLabel,你可以在if else中实例化一个新的JLabel。它不是复印机,而是工厂(例如MyJLabelFactory.getJLabel(labelNo)))
答案 1 :(得分:1)
如果你使用spring,你可以使用实用程序方法;例如,请参阅BeanUtils.copyProperties。