Question

Je suis en utilisant le code suivant,

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

pour changer la couleur de la barre d'outils en JFrame. Mais ça n'a pas marché.

Est-il possible de changer la couleur de la barre de titre en JFrame?

Était-ce utile?

La solution

Ce ne est pas possible. Le niveau supérieur JFrame est contrôlé par le look & feel du système d'exploitation sous-jacent.

Vous pouvez changer la couleur d'un InternalFrame.

Autres conseils

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

Pour Windows 10, dans votre principale méthode, vous pouvez utiliser:

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

Je pense que l'objectif est de achive un vrai regard sur l'application Win10. Comme il est impossible de changer la couleur du titre de la fenêtre pour de vrai, la seule façon est de personnaliser la fenêtre.

Bien que les exemples l'installation d'une variante du LAF métallique donne un bon exemple, je trouve que ce problème est plus complexe. Une véritable fenêtre Win10 doit avoir la frontière win10, frontière transparente (ombre) où l'utilisateur peut faire glisser pour redimensionner. Le titre doit utiliser des icônes Win10, et survols pour le boutons de la fenêtre.

Je f.setUndecorated (true); et d'en tirer sur moi-même, et mettre EISN de la fenêtre afin que le contenu fonctionnera normalement.

(petits caractères. Bien que nous « savons » que l'on peut personnaliser swing avec Lafs, dans la vie réelle écriture d'un LAF est toujours beaucoup plus compliqué que le sous-classement et le dessin de votre propre décoration En tant tracas supplémentaire, le LAF l'architecture n'exprime pas toutes les propriétés des composants, et la « native » LAF est assez loin de l'aspect natif (par exemple, vérifier la liste déroulante win7) ou la sensation (dropdowns ne glisse pas, dropdowns win7 n'ont pas en vol stationnaire, mais les boutons ne) . Oh, sans parler de l'absence de composants de type Windows, comme un ruban office 2016 décent, ou même un simple « bascule » de Win10. Vraiment, vous ne pouvez pas faire trop sans brasser vos propres composants.)

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));
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top