我正在使用TextStyle
和Styler
在我正在创建的SWT窗口中提供着色。
我的Styler
方法applyChanges()
出现问题。该方法(由SWT的作者构建到Styler
中的抽象方法)采用TextStyle
对象并对其应用格式,例如,如下所示:
public void applyStyles(TextStyle textStyle) {
textStyle.background = new Color(null, new RGB(102, 0, 58));
//yada yada
}
但是,我不想直接将样式应用于它,而是指定一个已经包含所有样式的属性。换句话说,我正在尝试这个:
public void applyStyles(TextStyle textStyle) {
textStyle= this.textStyleAttributeStyle;
}
不幸的是,尽管这不起作用,我认为它与通过引用传递属性有关,因为当我逐个复制属性时,例如像
public void applyStyles(TextStyle textStyle) {
textStyle.background= this.textStyleAttributeStyle.background;
}
效果很好!
所以我的问题是,如何在textStyleAttributeStyle
中提供每个属性的完整克隆/副本,并以最短的代码将其复制到textStyle
中的相应属性?
答案 0 :(得分:0)
我认为Java Deep Cloning Library可能对您有用,
Cloner cloner=new Cloner();
MyClass clone=cloner.deepClone(o);
// clone is a deep-clone of o