我有大量的jbutton,jtextfield,jlabel,jmenu和GUI元素,逐一设置背景颜色和前景颜色非常耗时。
我希望能够快速、简洁地为我的项目中的所有jmenu、jmenuitem、jtextfield、jbutton等着色字体(前景)和背景色。
是否有任何技巧可以更加简洁地完成这项工作,而不是逐一进行设置?
我有大量的jbutton,jtextfield,jlabel,jmenu和GUI元素,逐一设置背景颜色和前景颜色非常耗时。
我希望能够快速、简洁地为我的项目中的所有jmenu、jmenuitem、jtextfield、jbutton等着色字体(前景)和背景色。
是否有任何技巧可以更加简洁地完成这项工作,而不是逐一进行设置?
它们都是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"));
}
因此,使用CSS更容易。同一篇文章继续提供有关如何使用Swing实现CSS的教程。他们提供了一个很好的步骤,创建正确的规则,然后继续在CSS中实现它们。但是,这不仅仅是“复制并粘贴”代码。在我们介绍CSS实现之前,让我们考虑另一种选择:自定义外观和感觉。 Swing外观和感觉(L&F)是一组类,它们以非常低的级别实现组件的实际绘制(考虑线条和位图)。它们可以在运行时被替换为新的外观和感觉,通常用于实现本地平台的外观;即,OSX的JDK有一组类,使Swing应用程序看起来像本地的Aqua应用程序,具有糖果按钮和蓝色色调。自定义L&Fs功能强大,但不是简单或快速构建的。您通常需要涉及20个左右的类,并实现大量特殊绘制代码。
如果您只想使用一个软件包(而不必自己编写代码),那么对于问题我能在Java Swing中使用CSS吗?的答案建议使用Flying Saucer和Jaxx。