2011-01-07 124 views
2

我知道您可以通过设置“外观和感觉”来更改应用程序的整体外观。是否有办法在不编写外观类的情况下全局更改组件?例如,如果你想让你的所有按钮都是黑色的,你会如何做到这一点?我正在画空白。Java Swing - 将面板全局更改为粉红色背景

由于 ST

回答

1

一种解决方案可以是,工厂模式;

您可以创建一个Factory类,该类创建具有预定义设置的按钮。每当你需要一个按钮使用这个工厂类,你会得到具有预定义属性的对象。

Button button = factory.createButton() 

class Factory{ 
Button createButton(){ 
    Button button = new Button(); 
    button.setBackgroundColor(Color.PINK); 
    return button; 
} 
} 
+0

谢谢。我不清楚。如果我有一个现有的应用程序,并且我的客户说他们想要按钮的不同颜色方案。这怎么可能完成? – soulTower 2011-01-07 14:13:12

+0

您可以使用相同的名称来扩展按钮类,例如: Button扩展了javax.swing.Button,并在这个新类的构造函数中设置了背景值。但是,您仍然需要更新代码并将所有javax.swing.Button导入替换为新类。与现有代码的工厂方式相比,更轻松地进行重构。 – fmucar 2011-01-07 16:04:03

0

如果您有可能会通过这些回路设置背景色对应的组件的集合。

public void setBgColor(Color color, List<Component> components) { 
    for (Component c : components) { 
     c.setBackgroundColor(color); 
    } 
} 

困难的部分是获取组件列表。我已经通过注册某个组件集合并使用上述方法来设置各种属性。这种情况是集中对象创建的一个很好的参数。

-1

如果不仅颜色需要更改会怎样?如果这是一切都在您的控制之下的应用程序,那么利用继承 - 为所有必需组件(例如面板,按钮)创建基类并覆盖paintComponent方法以满足您的需求是有意义的。如果通过提供从paintComponent方法调用的相关“画家”,可以在实例化时自定义基础组件中的paintComponent方法的行为,则此方法可能更为模块化。

Here是一个潜在的有用的链接。