java - 如何使用 Nimbus Look and Feel 更改 JPanels 的背景颜色?

标签 java swing colors nimbus uimanager

我想为应用程序中的所有 JPanel 使用不同的背景颜色。使用 Nimbus Look and Feel 时如何做到这一点?

我关注 Changing the Color Theme在 Nimbus Look and Feel 中更改组件的颜色。

它只是有时有效,随机。如果我在更改颜色之前设置了 PropertyChagneListener,它只会被通知一次

这是一些测试代码:

public class RedPanels extends JFrame {

  public RedPanels() {
    JPanel panel = new JPanel();
    add(panel);
    setPreferredSize(new Dimension(100, 100));
    pack();
    setVisible(true);
  }

  public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {

      @Override
      public void run() {

        try {
          for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
            if ("Nimbus".equals(info.getName())) {
                UIManager.setLookAndFeel(info.getClassName());
                UIManager.getDefaults().addPropertyChangeListener(
                                               new PropertyChangeListener() {

                  @Override
                  public void propertyChange(PropertyChangeEvent event) {
                    if (event.getPropertyName().equals("Panel.background")) {
                      System.out.println("color changed");
                    }

                });
                UIManager.put("Panel.background", new Color(255,0,0));
                break;
            }
          }
        } catch (Exception e) {
            // Nimbus is not available.
        }
        new RedPanels();
        }
    });
  }
}

最佳答案

UIManager.getLookAndFeelDefaults().put("Panel.background", Color.RED);

关于java - 如何使用 Nimbus Look and Feel 更改 JPanels 的背景颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8246589/

相关文章:

Android 分隔线颜色 DatePicker 对话框

java - 无法从命令行运行 Java 单元测试代码

java - 为什么我的类没有记录日志,但 Spring 正在记录日志(带有 Maven 和 log4j 的 Spring boot)?

java - 使用 JSpinner 获取值

java - 更改 BlueJ/Java 中的 system.out 字体和颜色

jQuery 在悬停时切换元素的颜色

java - 为什么 writeBytes 会丢弃每个字符的高八位?

java - 选择在哪个监视器中打开 JavaFX 窗口

java - 如何在 GridBagLayout 单元格内左对齐或右对齐?

java - 如何有效地嵌套 GridbagLayout 托管 Pane 并使其正确调整大小?