如何改变JFrame中标题栏的颜色?

新手上路,请多包涵

我正在使用以下代码,

 UIManager.put("JFrame.activeTitleBackground", Color.red);

用于更改 JFrame 中的工具栏颜色。但它没有用。

是否可以更改 JFrame 中标题栏的颜色?

原文由 Venkat 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.8k
2 个回答

这是不可能的。顶层 JFrame 由底层操作系统的外观控制。

您可以更改 InternalFrame 的颜色。

原文由 Andrew Dyster 发布,翻译遵循 CC BY-SA 2.5 许可协议

//source : javax/swing/plaf/metal/MetalTitlePane.java
    import javax.swing.*;
    import javax.swing.plaf.*;
    import javax.swing.plaf.metal.*;
    public class TitleColor
    {
        public static void main_helper (String args[])
        {
            JFrame f = new JFrame ();
            f.setDefaultCloseOperation
            (
                JFrame.DISPOSE_ON_CLOSE
            );
            f.setSize (300, 300);
            f.setLocationRelativeTo (null);

            f.setUndecorated ( true );
            f.getRootPane ().setWindowDecorationStyle
            (
                JRootPane.FRAME
            );

            JPanel panel = new JPanel ();
            panel.setBackground ( java.awt.Color.white );
            f.setContentPane ( panel );

            DefaultMetalTheme z =
            new DefaultMetalTheme ()
            {
                //inactive title color
                public ColorUIResource
                getWindowTitleInactiveBackground()
                {
                    return new ColorUIResource
                        (java.awt.Color.orange);
                }

                //active title color
                public ColorUIResource
                getWindowTitleBackground()
                {
                    return new ColorUIResource
                        (java.awt.Color.orange);
                }
                //start ActiveBumps
                public ColorUIResource
                getPrimaryControlHighlight()
                {
                    return new ColorUIResource
                        (java.awt.Color.orange);
                }
                public ColorUIResource
                getPrimaryControlDarkShadow()
                {
                    return new ColorUIResource
                        (java.awt.Color.orange);
                }

                public ColorUIResource
                getPrimaryControl()
                {
                    return new ColorUIResource
                        (java.awt.Color.orange);
                }
                //end ActiveBumps

                //start inActiveBumps
                public ColorUIResource
                getControlHighlight ()
                {
                    return new ColorUIResource
                        (java.awt.Color.orange);
                }

                public ColorUIResource
                getControlDarkShadow ()
                {
                    return new ColorUIResource
                        (java.awt.Color.orange);
                }

                public ColorUIResource
                getControl ()
                {
                    return new ColorUIResource
                        (java.awt.Color.orange);
                }
                //end inActiveBumps

            };

            MetalLookAndFeel.setCurrentTheme
            (
                z
            );

            try
            {
                UIManager.setLookAndFeel
                (
                    new MetalLookAndFeel ()
                );
            }
            catch (Exception e)
            {
                e.printStackTrace ();
            }

            SwingUtilities.updateComponentTreeUI (f);

            f.setVisible (true);

        }
        public static void main (final String args[])
        {
            SwingUtilities.invokeLater
            (
                new Runnable ()
                {
                    public void run ()
                    {
                        main_helper ( args );
                    }
                }
            );
        }
    }

原文由 guest123 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题