如何一次设置所有JavaSwingGUI组件的背景和前景(字体)颜色?

如何一次设置所有JavaSwingGUI组件的背景和前景(字体)颜色?,java,swing,components,look-and-feel,uimanager,Java,Swing,Components,Look And Feel,Uimanager,我有大量的jbutton、jtextfields、jlabel、jmenus和gui项,一次设置一个背景色和一个前景色非常耗时 我希望能够在我的项目中快速/简洁地为所有jmenus、jmenuitem、jtextfields、jbuttons等字体(前景)和背景上色,而不必一次设置一个 有什么技巧可以更简洁地做到这一点,而不是一次只做一个吗?1)最有效的方法是使用,其中一部分有很好的主题 2) 将值设置为 编辑: 最重要的是@camickr您可以将Swing与CSS结合使用,或者使用Swing外

我有大量的jbutton、jtextfields、jlabel、jmenus和gui项,一次设置一个背景色和一个前景色非常耗时

我希望能够在我的项目中快速/简洁地为所有jmenus、jmenuitem、jtextfields、jbuttons等字体(前景)和背景上色,而不必一次设置一个

有什么技巧可以更简洁地做到这一点,而不是一次只做一个吗?

1)最有效的方法是使用,其中一部分有很好的主题

2) 将值设置为

编辑:


最重要的是@camickr

您可以将Swing与CSS结合使用,或者使用Swing外观,为您的组件创建标准外观。报告说:

<>在进入CSS实现之前,让我们考虑另一种选择:自定义外观和感觉。Swing Look and Feels(L&Fs)是一组类,它们以非常低的级别(想想线条和位图)实现组件的实际绘制。它们可以在运行时换成新的,通常是为了实现本地平台的外观;i、 例如,JDK for OSX有一组类,使Swing应用程序看起来像本地Aqua应用程序,带有糖果按钮和蓝色色调。自定义L&F功能强大,但不是简单的或快速构建的。您通常需要接触20个左右的类,并实现一整套特殊的绘图代码

所以CSS更容易使用。同一篇文章还提供了一个关于如何使用Swing实现CSS的教程。它们提供了一个很好的演练,可以创建正确的规则,然后在CSS中实现它们。然而,这并不是简单的“复制粘贴”代码


如果你只想使用一个软件包(不需要自己编写代码),那么问题的答案会给出建议

它们都是
JComponents
,因此您可以为所有内容创建
ArrayList

//Adding everything to the ArrayList
ArrayList<JComponent> myComponents = new ArrayList<JComponents>();

JButton b1 = new JButton("Button 1");
myComponents.add(b1);

JMenuItem item = new JMenuItem("Menu Item 1");
myComponents.add(item);

//Coloring the foreground/background
for(JComponent j : myComponents) {
    j.setForeground(new Color("BLUE"));
    j.setBackground(new Color("RED"));
}
//将所有内容添加到ArrayList
ArrayList myComponents=新的ArrayList();
JButton b1=新JButton(“按钮1”);
添加(b1);
JMenuItem项目=新的JMenuItem(“菜单项1”);
myComponents.add(项目);
//给前景/背景上色
对于(JComponentJ:myComponents){
j、 设置前景(新颜色(“蓝色”);
j、 挫折背景(新颜色(“红色”));
}

如果您在
javax.swing.UIManager
中使用了尊重UI常量的外观,那么您可以设置它们。有一些值,例如面板背景。如果没有,或者如果你不能通过这个来控制外观,你可以编写你自己的UI委托来绘制一个特定的组件(例如,
javax.swing.plaf.ButtonUI
for JButtons)。如果这还不够,你可以写下自己的外观和感觉。如果您只是扩展金属LnF,那么它就没有那么难了,您可以编写自己的UI委托并设置属性,就像上面所说的那样,但是是集中的。

每个人都是对的,所以每个人的答案都是正确的