哪里存储一致的应用程序属性?

时间:2013-09-18 17:24:05

标签: java swing user-interface properties

我正在使用Java构建Swing应用程序,我希望颜色保持一致。所以我可以这样做:

public class Colours {
    public static final String BACKGROUND = "#D9DADE";
}

但后来我想也许恩赐会更好,所以我这样做了:

public enum ColourStyles { 
    BACKGROUND("#D9DADE");

    private String colourValue;

    private ColourStyles(String value) {
        colourValue = value;
    }

    public String getColourValue() {
            return colourValue;
    }
};

但是那时使String现在成为ColourStyle类型,我无法使用Color.decode(BACKGROUND)对其进行解码。

有没有更好的方法来完成这项工作,比如属性文件?我已经完成了Wicket但在Swing中从未遇到过相同类型的标签/颜色结构。

谢谢!

1 个答案:

答案 0 :(得分:2)

2个选项很好,但我更喜欢第3种方式而且它使用属性文件。因此,如果要更改,则无需重新编译应用程序。

第一)

public final class Colours {

private Colours(){}

public static final BACKGROUND = "#D9DADE";

}

。 2)没关系,但你可以在枚举中添加一个方法来返回颜色。

public enum ColourStyles { 
    BACKGROUND("#D9DADE");

    private String colourValue;

    private ColourStyles(String value) {
        colourValue = value;
    }

    public String getColourValue() {
            return colourValue;
    }

    public Color getColour(){
      return Color.decode(colourValue);
    }

}

并且第3步)创建一个文件,例如lookAndFeel.properties

colour.background=#D9DADE

创建一个可以singleton加载属性文件的类,你可以添加一个util方法来返回枚举中的颜色,这样做的好处是可以在不编译的情况下更改值再次你的申请。

4th)如果您使用的是可自定义的外观,并且您可以使用UIManager.put();设置该属性来设置所有组件的属性。以下是Nimbus L& F Nimbus defaults

的属性示例