Frage

Ich verwende den folgenden Code,

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

für Änderung der Symbolleiste Farbe in JFrame. Aber es hat nicht funktioniert.

Ist es möglich, die Farbe der Titelleiste in JFrame zu ändern?

War es hilfreich?

Lösung

Es ist nicht möglich. Die oberste Ebene JFrame wird durch das Look & Feel des zugrunde liegenden Betriebssystem gesteuert wird.

Sie können die Farbe eines InternalFrame ändern.

Andere Tipps

//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 );
                    }
                }
            );
        }
    }

Für Microsoft Windows 10, in der Haupt Methode können Sie verwenden:

UIDefaults uiDefaults = UIManager.getDefaults();
uiDefaults.put("activeCaption", new javax.swing.plaf.ColorUIResource(Color.gray));
uiDefaults.put("activeCaptionText", new javax.swing.plaf.ColorUIResource(Color.white));
JFrame.setDefaultLookAndFeelDecorated(true);

ich glaube, das Ziel ist es, eine reale Anwendung Blick auf Win10 achive. Da es nicht möglich ist, den Fenstertitel Farbe für echte ändern zu können, ist der einzige Weg das Fenster anpassen.

Obwohl Beispiele eine Variante des Metall LAF Installation ein gutes Beispiel gibt, fand ich, dass dieses Problem komplizierter. Ein echtes Win10 Fenster hat win10 Grenze haben, transparente Ränder (Schatten), wo der Benutzer für Resize ziehen. Der Titel hat Win10-Symbole zu verwenden, und Hover für die Fenster-Schaltflächen.

Ich würde f.setUndecorated (true); und ziehen Sie es auf eigene Faust, und stellen Sie die Einsätze des Fensters, so dass der Inhalt wie gewohnt arbeiten.

(Print Klein: obwohl wir alle „wissen“, dass ein Schwingen mit LAFS anpassen kann, im wirklichen Leben ein LAF schreibt, ist immer viel komplizierter mehr als nur Subklassen und Ihre eigene Dekoration zeichnen Als zusätzlichen Aufwand, der LAF. Architektur drückt nicht alle die Komponenteneigenschaften und die „native“ LAF ist ziemlich weit von dem nativen Look (zB auf den win7 Dropdown) oder das Gefühl (Dropdown-Listen nicht herausrutschen, win7 Dropdown-Listen haben keine schweben, sondern Tasten tun) Oh., nicht das Fehlen von Windows-ähnlichen Komponenten, wie eine ordentliche Büro 2016 Band oder sogar einem einfachen „Toggle“ von Win10 zu erwähnen. Wirklich, man kann nicht zu viel tun, ohne eigene Komponenten zu brauen.)

UIManager.put("InternalFrame.activeTitleBackground", new ColorUIResource(Color.black ));
UIManager.put("InternalFrame.activeTitleForeground", new ColorUIResource(Color.WHITE));
UIManager.put("InternalFrame.titleFont", new Font("Dialog", Font.PLAIN, 11));
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top