当前位置: 首页 > 知识库问答 >
问题:

如何使用java更改nimbus外观的背景色

爱刚捷
2023-03-14

在Java Swing应用程序中,我正在尝试nimbus外观。它在JdesktopPane控件中看起来非常棒,但我希望我的所有桌面都有不同的颜色,但主题很好。

有没有办法改变灵气观感的背景颜色?

下面是应用nimbus外观的示例代码。

   try {
        for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
          if ("Nimbus".equals(info.getName())) {
          UIManager.setLookAndFeel(info.getClassName());
          break;
         }
        }
       }  
     catch (Exception e) {}

共有2个答案

罗梓
2023-03-14

Nimbus使用看起来像矢量类型的绘图例程来绘制背景图案。要在使用nimbus时更改JDesktopPane的背景,您需要更改JDesktopPane使用的背景画师,只需使用所需的背景颜色(例如灰色)填充窗格。然后使用该Painter对象设置“DesktopPane[Enabled].backgroundPainter”属性。例如,观察下面给出的代码:

import java.awt.Graphics2D;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JDesktopPane;
import javax.swing.SwingUtilities;
import javax.swing.UIDefaults;
import javax.swing.UIManager;
import javax.swing.UIManager.LookAndFeelInfo;
import com.sun.java.swing.Painter;
import java.awt.Color;

public class NimbusFrame extends JFrame
{
    private JDesktopPane desktop;
    public void prepareAndShowGUI()
    {
        desktop = new MyDesktopPane();
        getContentPane().add(desktop);
        setSize(300,400);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    }
    class MyDesktopPane extends JDesktopPane
    {
        @Override
        public void updateUI() 
        {
            if ("Nimbus".equals(UIManager.getLookAndFeel().getName())) 
            {
                UIDefaults map = new UIDefaults();
                Painter<JComponent> painter = new Painter<JComponent>() 
                {
                    @Override
                    public void paint(Graphics2D g, JComponent c, int w, int h) 
                    {
                        g.setColor(Color.gray);
                        g.fillRect(0, 0, w, h);
                    }
                };
                map.put("DesktopPane[Enabled].backgroundPainter", painter);
                putClientProperty("Nimbus.Overrides", map);
            }
            super.updateUI();
        }
    }
    public static void main(String st[])
    {
        try
        {
            for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) 
            {
                    if ("Nimbus".equalsIgnoreCase(info.getName())) 
                {
                        UIManager.setLookAndFeel(info.getClassName());
                        break;
                    }
                }
        }catch(Exception ex){}
        SwingUtilities.invokeLater( new Runnable()
        {
            public void run()
            {
                NimbusFrame frame = new NimbusFrame();
                frame.prepareAndShowGUI();
            }
        });
    }
}
马安邦
2023-03-14
UIManager.put("nimbusBase", new Color(...));
UIManager.put("nimbusBlueGrey", new Color(...));
UIManager.put("control", new Color(...)) 

从l

 类似资料:
  • 问题内容: 我想为应用程序中的所有JPanel使用不同的背景色。使用Nimbus外观时该如何做? 我遵循“ 更改颜色主题”来更改Nimbus外观中的组件的颜色。 它有时只是 随机地 起作用。如果在更改颜色之前设置,则仅通知 一次 。 这是一些测试代码: 问题答案:

  • 问题内容: 有谁知道使用JavaScript交换网页背景色的简单方法? 问题答案: 修改JavaScript属性。 例如: 注意:这确实取决于页面的组合方式,例如,如果您使用的背景颜色不同的DIV容器,则需要修改其背景颜色而不是文档主体。

  • 问题内容: 我已经将JOptionPane添加到我的应用程序中,但是我不知道如何将背景颜色更改为白色? 问题答案: 通过使用类 要么

  • 问题内容: 我试图在Storyboard检查器中将背景从透明更改为白色,但是在模拟时,堆栈视图的背景颜色仍然具有清晰的颜色。 如何更改的背景颜色? 问题答案: 您不能执行此操作– 是非绘图视图,这意味着从不调用该视图, 并且其背景颜色将被忽略。如果您非常需要背景颜色,请考虑将堆栈视图放置在另一个视图中,并为该视图提供背景颜色。 参考从这里。 编辑: 您可以在此处或下面的答案中(如下)将subVie

  • 使用javafx场景构建器,我创建了一个TableView,其中几乎没有可编辑的列和不可编辑的列。如何为不可编辑的列设置CSS样式,使整个列变灰。我创建了一个如下所示的样式类,并将其映射到javafx场景构建器中的表列。但它不起作用。 在论坛上搜索,找不到设置tableview列样式的解决方案。你能建议一种方法吗?

  • 我正在使用浮动操作按钮,我想更改背景颜色。 这是我的密码 下面是我用来尝试实现这一点的代码: 我也得到我的FAB的角落,如图所示。我应该如何消除那些角落的阴影?