我知道您可以通过设置“外观和感觉”来更改应用程序的整体外观。是否有办法在不编写外观类的情况下全局更改组件?例如,如果你想让你的所有按钮都是黑色的,你会如何做到这一点?我正在画空白。Java Swing - 将面板全局更改为粉红色背景
由于 ST
我知道您可以通过设置“外观和感觉”来更改应用程序的整体外观。是否有办法在不编写外观类的情况下全局更改组件?例如,如果你想让你的所有按钮都是黑色的,你会如何做到这一点?我正在画空白。Java Swing - 将面板全局更改为粉红色背景
由于 ST
一种解决方案可以是,工厂模式;
您可以创建一个Factory类,该类创建具有预定义设置的按钮。每当你需要一个按钮使用这个工厂类,你会得到具有预定义属性的对象。
Button button = factory.createButton()
class Factory{
Button createButton(){
Button button = new Button();
button.setBackgroundColor(Color.PINK);
return button;
}
}
使用UIManager并更改外观的默认值。这里有一个很好的工具:http://tips4java.wordpress.com/2008/10/09/uimanager-defaults/,如果你运行Java Web Start程序,它将允许你浏览每个组件的键和值。
然而,只是改变了背景可能导致一些新问题,来看看这个问题: Java- Changing swing background colour?
如果您有可能会通过这些回路设置背景色对应的组件的集合。
public void setBgColor(Color color, List<Component> components) {
for (Component c : components) {
c.setBackgroundColor(color);
}
}
困难的部分是获取组件列表。我已经通过注册某个组件集合并使用上述方法来设置各种属性。这种情况是集中对象创建的一个很好的参数。
如果不仅颜色需要更改会怎样?如果这是一切都在您的控制之下的应用程序,那么利用继承 - 为所有必需组件(例如面板,按钮)创建基类并覆盖paintComponent方法以满足您的需求是有意义的。如果通过提供从paintComponent方法调用的相关“画家”,可以在实例化时自定义基础组件中的paintComponent方法的行为,则此方法可能更为模块化。
Here是一个潜在的有用的链接。
谢谢。我不清楚。如果我有一个现有的应用程序,并且我的客户说他们想要按钮的不同颜色方案。这怎么可能完成? – soulTower 2011-01-07 14:13:12
您可以使用相同的名称来扩展按钮类,例如: Button扩展了javax.swing.Button,并在这个新类的构造函数中设置了背景值。但是,您仍然需要更新代码并将所有javax.swing.Button导入替换为新类。与现有代码的工厂方式相比,更轻松地进行重构。 – fmucar 2011-01-07 16:04:03