在做图形化界面时,为了美观,我们常常需要对窗口的背景进行修改。那么怎样才能拥有美美的背景呢。
在写代码前我们需要先弄清楚JFrame的层次结构。
即:
从上图可知,JFrame是由多层叠加而成。
JFrame frame=new JFrame("Test_1");
frame.setBackground(Color.Blue);
frame.setSize(800, 600);
frame.setVisible(true);
当我们运行上述代码时,可以发现背景颜色仍然为白色,这就是因为JFrame的多层结构,Content Pane绘制在Root Pane之上,所以Content Pane的背景覆盖了,整个屏幕显示的为ContentPane的颜色。聪明的朋友们马上就想到了,那有没有办法将拦在上方的Pane设置为透明呢,答案是可以的,下面就是实现的两个方法:
setVisible()说明:为flase时,组件本身及增加在该组件上的组件都不可见;
setOpaque()说明:为flase时,只针对设置了透明的组件,其他组件不受影响;
设置背景颜色:
//设置背景颜色
public void setBackColor() {
this.setBackground(new Color(211,211,211));
JPanel jp = (JPanel)this.getContentPane();
jp.setOpaque(false);//设置为透明
}
public Alien_Invasion() {
setBackColor();
//创建屏幕对象
setSize(850,600);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}