¿Cómo puedo cambiar el color de la barra de título en JFrame?

Estoy usando el siguiente código,

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

para cambiar el color de la barra de herramientas en JFrame. Pero no funcionó.

¿Es posible cambiar el color de la barra de título en JFrame?

No es posible. El JFrame de nivel superior está controlado por la apariencia del SO subyacente.

PUEDE cambiar el color de un InternalFrame .

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

Creo que el objective es lograr una apariencia de aplicación real en Win10. Como no es posible cambiar el color del título de la ventana de forma real, la única forma es personalizar la ventana.

Aunque los ejemplos que instalan una variante de Metal LAF dan un buen ejemplo, descubrí que este problema es más complicado. Una ventana Win10 real tiene que tener un borde win10, un borde transparente (sombra) donde el usuario puede arrastrar para cambiar el tamaño. El título tiene que usar icons de Win10 y se desplaza hacia los botones de la ventana.

Me f.setUndecorated (verdadero); y dibujarlo por mi cuenta, y establecer las inserciones de la ventana para que el contenido funcione de forma normal.

(Letra pequeña: aunque todos “sabemos” que se puede personalizar Swing con LAF, en la vida real escribir un LAF siempre es mucho más complicado que solo crear subclases y dibujar su propia decoración. Como una molestia adicional, la architecture LAF no exprese todas las propiedades del componente, y el LAF “nativo” está bastante alejado del estilo nativo (p. ej., compruebe el menú desplegable win7) o la sensación (los menús desplegables no se deslizan, los menús desplegables win7 no tienen vuelo estacionario, pero los botones sí). sin mencionar la falta de componentes parecidos a Windows, como una cinta de Office 2016 decente, o incluso un simple “alternar” de Win10. Realmente, no se puede hacer demasiado sin preparar sus propios componentes).

Para Windows10, en su método principal, puede usar:

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