【问题标题】:Java Swing - Globally Change Panels to Have Pink BackgroundJava Swing - 全局更改面板以具有粉红色背景
【发布时间】:2011-01-07 14:00:28
【问题描述】:

我知道您可以通过设置“外观”来更改应用程序的整体外观。有没有办法在不编写外观类的情况下全局更改组件?例如,如果您希望所有按钮都是黑色的,您将如何做到这一点?我在画一个空白。

谢谢 ST

【问题讨论】:

    标签: java swing user-interface look-and-feel uimanager


    【解决方案1】:

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

    但是,仅仅改变背景可能会导致一些新问题,看看这个问题: Java- Changing swing background colour?

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 谢谢。我不清楚。如果我有一个现有的应用程序并且我的客户说他们想要不同的按钮配色方案。这怎么可能实现?
      • 您可以扩展具有相同名称的按钮类,例如 ; Button 扩展 javax.swing.Button 并在这个新类的构造函数中设置背景值。但是,您仍然需要更新代码并将所有 javax.swing.Button 导入替换为新类。与现有代码的工厂方式相比,重构更容易。
      【解决方案3】:

      如果您有相应组件的集合,您可以循环通过它们设置 BG 颜色。

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

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

      【讨论】:

        【解决方案4】:

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

        Here 是一个可能有用的链接。

        【讨论】:

          猜你喜欢
          • 2011-10-01
          • 2011-05-12
          • 1970-01-01
          • 1970-01-01
          • 2017-11-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-09-06
          相关资源
          最近更新 更多