Java-如何简单地分配大量颜色?

Java-如何简单地分配大量颜色?,java,Java,我只是想知道是否有办法让代码更简单。 谢谢 看起来您的对象实际上应该是组合在一起的集合的一部分 // assuming "mainMenuButtons" (or whatever) contains your first four objects // note I don't know what color (84, 209, 241) actually is for(Button btn : mainMenuButtons) { btn.setBackground(new java

我只是想知道是否有办法让代码更简单。 谢谢


看起来您的对象实际上应该是组合在一起的集合的一部分

// assuming "mainMenuButtons" (or whatever) contains your first four objects
// note I don't know what color (84, 209, 241) actually is
for(Button btn : mainMenuButtons) {
    btn.setBackground(new java.awt.Color(84, 209, 241));
}
其次,这些颜色是不变的。没有必要创建这么多对象

Color reddish = new java.awt.Color(84, 209, 241);
// then just use reddish everywhere instead of creating a new color each time.

您可以只创建每个颜色一次,然后根据需要指定它们,而不是反复创建相同的颜色:

Color btnColor = new Color(84, 209, 241);
Color txtColor1 = new Color(127, 228, 255);
Color textcolor2 = new Color(89, 89, 89);
然后:


要简化代码和将来可能要进行的更改,请执行以下操作:

  • 为应共享相同前景或背景的组件创建容器
  • 为颜色创建容器(按状态索引)
  • 创建一个小的ComponentUtil类,用于更改容器所有成员的颜色
  • 当一个操作改变组件的状态时,您为组件选择正确的颜色并调用ComponentUtil.setBackground(组件,颜色);或ComponentUtil.setForeground(组件、颜色)

    导入java.awt.Color;
    导入java.awt.Component;
    公共类组件util{
    公共静态空间背景(组件[]组件,颜色){
    对于(int i=0;i
    使用常量。为这些变量中的每一个创建变量并重用它们。OP应该注意,它们必须添加
    import java.awt.*到其文件的顶部。
    
    Color btnColor = new Color(84, 209, 241);
    Color txtColor1 = new Color(127, 228, 255);
    Color textcolor2 = new Color(89, 89, 89);
    
    private void btnBlueActionPerformed(java.awt.event.ActionEvent evt) {
        btnConvert.setBackground(btnColor);                                    
        btnReset.setBackground(btnColor);                                      
        btnClose.setBackground(btnColor);                                      
        btnInfo.setBackground(btnColor);                                       
        txtIncome.setBackground(txtColor1);                                    
        txtPayable.setBackground(txtColor1);                                   
        txtStatus.setBackground(txtColor1);                                    
        txtIncome.setForeground(textcolor2);                                       
        txtPayable.setForeground(textcolor2);                                      
        txtStatus.setForeground(textcolor2);                                        
    }  
    
    import java.awt.Color;
    import java.awt.Component;
    public class ComponentUtil {
    
    public static void setBackground(Component[] components, Color color) {
        for (int i=0; i < components.length; i++) {
            components[i].setBackground(color);
        }
    }
    
    public static void setForeground(Component[] components, Color color) {
        for (int i=0; i < components.length; i++) {
            components[i].setForeground(color);
        }
    }
    }