Java Swing - 全局更改面板以具有粉红色背景

发布于 2024-10-11 01:13:37 字数 110 浏览 7 评论 0原文

我知道您可以通过设置“外观和感觉”来更改应用程序的整体外观和感觉。有没有一种方法可以全局更改组件而无需编写外观类?例如,如果您希望所有按钮都是黑色,您会怎么做?我正在画一个空白。

谢谢 英石

I know that you can change the overall look and feel of an application by setting the "look and Feel". Is there a way to globally change components without writing a look and feel class? For example if you wanted all of your buttons to be black how would you do this? I'm drawing a blank.

Thanks
ST

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

青芜 2024-10-18 01:13:38

使用 UIManager 并更改您的外观和感觉的默认值。这里有一个很好的工具: http://tips4java.wordpress.com/ 2008/10/09/uimanager-defaults/ 如果您运行 Java Web Start 程序,它将允许您浏览每个组件的键和值。

然而,仅仅改变背景可能会导致一些新问题,看看这个问题:
Java-更改 swing 背景颜色?

Use the UIManager and change the defaults for your look and feel. There is a nice tool here: http://tips4java.wordpress.com/2008/10/09/uimanager-defaults/ that if you run the Java Web Start program it will allow you to browse the keys and values for each component.

However, just changing the background might cause some new issues, take a look at this question:
Java- Changing swing background colour?

℉服软 2024-10-18 01:13:38

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

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

Button button = factory.createButton()

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

One solution can be, factory pattern;

You can create a Factory class that creates buttons with predefined settings. Everytime you
need a button use this factory class and you will get objects with predefined properties.

Button button = factory.createButton()

class Factory{
 Button createButton(){
   Button button = new Button();
   button.setBackgroundColor(Color.PINK);
   return  button;
 }
}
与君绝 2024-10-18 01:13:38

如果您有相应组件的集合,您可以循环遍历它们设置背景颜色。

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

困难的部分是获取组件列表。我通过向集合注册某些组件组并使用上述方法设置各种属性来完成此操作。这种情况是集中式对象创建的一个很好的论据。

If you have a collection of the corresponding components you could loop through them setting the BG color.

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

The hard part is getting a list of components. I've done this by registering certain component groups with a collection and using the above method to set various properties. This scenario is a good argument for centralized object creation.

脸赞 2024-10-18 01:13:38

如果不仅需要改变颜色怎么办?如果这是一个一切都在您控制之下的应用程序,那么利用继承是有意义的——为所有必需的组件(例如面板、按钮)创建基类并重写paintComponent 方法以满足您的需求。如果基本组件中的paintComponent方法的行为可以在实例化时通过提供从paintComponent方法调用的相关“画家”来定制,那么这种方法可以更加模块化。

这里是一个可能有用的链接。

What if not only the colour needs to be changed? If this is an application where everything is under your control then it makes sense to utilise inheritance -- create base classes for all required components (e.g. panels, buttons) and override the paintComponent method to suite your needs. This approach could be more modular if the behaviour of the paintComponent method in the base components could be customised at instantiation time by providing relevant "painters", which are invoked from the paintComponent method.

Here is a potentially useful link.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文