1

我正在用 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 中遇到过相同的标签/颜色结构。

谢谢!

4

1 回答 1

2

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

第 1)

public final class Colours {

private Colours(){}

public static final BACKGROUND = "#D9DADE";

}

. 2nd)没关系,但是您可以向枚举添加一个方法来返回颜色。

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

创建一个singleton可以加载属性文件的类,您可以添加一个 util 方法来返回枚举中的颜色,这样做的好处是您可以更改值而无需再次编译您的应用程序。

4)如果您使用可自定义的外观和感觉,您可以设置该属性,UIManager.put();用于设置所有组件的属性。这是 Nimbus L&F Nimbus 默认值的属性示例

于 2013-09-18T17:31:57.660 回答