¿Cómo configurar el color de fondo de la ventana de Java? No parece funcionar con setBackground(), ¡dame algún consejo!
¡Hola!
En primer lugar, la ventana Java de la que estás hablando se refiere a JFrame o Frame.
En segundo lugar, el color de fondo de la ventana de la que estás hablando se refiere a la configuración llamando directamente a setBackground( Color?color) método de JFrame o Frame El color que se muestra más tarde. De hecho, tu idea es correcta, pero lo que quiero recordarte es que no has entendido el mecanismo de visualización de JFrame. Después de llamar a este método directamente, de hecho ha configurado el color de fondo, pero lo que ve no es un JFrame o Frame directo, sino JFrame.getContentPane(). El contentPane en JFrame tiene por defecto Color.WHITE, así que, no importa cómo lo haga. establezca el color de fondo para JFrame o Frame, todo lo que verá es el panel de contenido.
Finalmente, hablemos de la solución:
Método A: después de completar la inicialización, llame a getContentPane() El método obtiene un contenedor contentPane y luego lo configura como invisible, es decir, setVisible (falso).
¡De esta manera podrás ver la verdadera cara de JFrame!
Código principal this.getContentPane().setVisible(false); //Obtiene el contenedor contentPane y configúrelo como invisible
El código completo del ejemplo es el siguiente: p>
/ * *?TestJFrameBGColor.java * *?Creado?el?2011-5-8,?0:21:20 */
paquete?testjframebgcolor;
importar?java.awt .Color;
/** * *?@autor?Ye Keliang*/
public?class?TestJFrameBGColor?extends?javax.swing.JFrame? {
/**?Creates?new?form?TestJFrameBGColor?*/
public?TestJFrameBGColor()?{
initComponents();
this .getContentPane().setVisible(false); //Obtiene el contenedor contentPane y configúrelo como invisible
}
/**?This?method?is ?llamado?desde?dentro?del?constructor?para *?inicializar?el?formulario *?ADVERTENCIA:?NO?modifique?este?código.?El?contenido?de?este?método?es *?siempre. ?regenerado?por?el?Editor de formularios. */
@SuppressWarnings("unchecked")
//?lt; editor-fold?defaultstate="collapsed"?desc ="¿Código generado?" gt;
privado?void?initComponents()?{
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
org .jdesktop.application.ResourceMap ?resourceMap?=?org.jdesktop.application.Application.getInstance(testjframebgcolor.TestJFrameBGColorApp.class).getContext().getResourceMap(TestJFrameBGColor.class);
setBackground(resourceMap. getColor("Form.background "));?/?//?NOI18N
setName("Form");?//?NOI18N
javax.swing.GroupLayout?layout?= ?new?javax.swing .GroupLayout(getContentPane());
getContentPane().setLayout(layout);
>
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0,?400,?Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap( 0,?300,?Short.MAX_VALUE)
);
paquete();
}//?lt;/editor-foldgt; p>
p>
/** *?@param?args?the?command?line?arguments */
public?static?void?main(String?args[]) ?{
java.awt.EventQueue.invokeLater(new?Runnable()?{
public?void?run()?{
new?TestJFrameBGColor ().setVisible( true);
}
});
}
//?Variables?declaración?-? do?not?modify
//?End?of?variables?declaration
}
Método B: establezca el color del panel de contenido en el color que desea, no la configuración del propio JFrame,
Código principal: this.getContentPane().setBackground(Color.red); //Establezca contentPane en rojo
Reemplace el código principal con el Código central del método A Implementación
Método C: agregue un panel o JLabel y otros componentes a JFrame, establezca su color en el color que desee y luego cubra la ventana de JFrame