как скопировать свойства jlabel в другой новый jlabel - PullRequest
0 голосов
/ 30 июня 2010

Я хочу скопировать свой личный объект 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;
    }
}

Как я могу сделать это так, как я хочу?Могу ли я использовать клон () на этом?

Спасибо

Ответы [ 2 ]

1 голос
/ 30 июня 2010

Если вы используете Spring, у вас есть метод утилит для этого;см., например, BeanUtils.copyProperties .

1 голос
/ 30 июня 2010

если реализован метод клонирования JLabel, вы можете использовать клон. В противном случае вам придется скопировать его (скопируйте свойства вашего частного JLabel в ваш публичный JLabel). Тогда для частного JLabel на самом деле нет смысла, и вы можете просто создать новый JLabel в своем if if else. Тогда это не копир, а фабрика (например, MyJLabelFactory.getJLabel (labelNo)))

...