JRootPane本身缺省情况下是透明的,而且JRootPane所包含的JLayeredPane和contentpane都是不透明的,它们把JRootPane挡住了。
要想显示出JRootPane的背景色就需要把JRootPane设置成不透明的,把JLayeredPane和contentpane设置成透明的。
import java.awt.Color;import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLayeredPane;
import javax.swing.JRootPane;public class Test { public static void main(String[] args) {
JFrame frame = new JFrame(); JRootPane rootPane = frame.getRootPane();
JLayeredPane layeredPane = rootPane.getLayeredPane();
JComponent contentPane = (JComponent) rootPane.getContentPane();
layeredPane.setOpaque(false);
contentPane.setOpaque(false);
rootPane.setOpaque(true);
rootPane.setBackground(Color.blue); frame.setSize(200, 200);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
    }
}