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

Java 在哪里存储一致的应用程序属性?,java,swing,user-interface,properties,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 Colo

我正在用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;
    }
};
但这使得字符串现在成为了一种颜色样式类型,我无法使用
Color.decode(BACKGROUND)
对其进行解码

有没有更好的方法完全做到这一点,比如属性文件?我曾经做过Wicket,但从来没有在Swing中遇到过相同的标签/颜色结构


谢谢

这两个选项都不错,但我更喜欢第三种方式,它使用的是属性文件。因此,如果要更改,不必重新编译应用程序

(一)

。 第二)可以,但是可以向枚举添加一个方法以返回颜色

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);
    }

}
第三)创建一个文件,例如
lookAndFeel.properties

colour.background=#D9DADE
创建一个可以是
单例的类来加载属性文件,您可以添加一个util方法来返回枚举中的颜色,这样做的好处是您可以在不重新编译应用程序的情况下更改值


第4)如果您使用的是可定制的外观,那么可以使用
UIManager.put()设置该属性设置所有组件的属性。以下是Nimbus L&F的属性示例

您可以使用
Color.decode(BACKGROUND.getcolorValue)
对其进行解码,也可以将其存储为整数或类中的颜色。例如背景(新颜色(..)。使用枚举或常量类不是一个坏方法,您还可以更好地使用属性文件,这样您就可以在不重新编译的情况下进行更改。我没有使用完全自定义的外观,我只是获取系统L&F并更改背景。
colour.background=#D9DADE