java 解决JFrame不能设置背景色的问题 分类: Java Game 2014-08-15 09:48 119人阅读 评论(0) 收藏

时间:2021-01-14 05:18:26

这段时间比较多,于是写一写JAVA的一些IT技术文章。如有JAVA高手请加QQ:314783246,互相讨论。

在Java的GUI设计中,Frame和JFrame两者之间有很大差别,上次刚学时编一个窗口老是出现不能设置背景色的问题,最后通过不断将一些代码注释掉的办法查出是JFrame类的问题。

看下面代码:

import java.lang.*;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class MainWindows extends JFrame{

private MainWindowsContentPane;

 

  public MainWindows(){

  this.setLayout(null);

  this.setTitle("学生管理系统");

  this.setBounds(0,0,800,600);

  this.setBackground(Color.RED);//改成this.getContentPane().setBackground(Color.RED);即可

this.addWindowListener( newWindowAdapter(){

public void windowClosing(WindowEvent e){

System.exit(0);

});

}

  this.setVisible(true);

  ContentPane=this;

   }

}

该程序运行后背景色并没有变成RED,但是将第5行改成"extendsFrame"就能改背景色,那么为什么JFrame不行,原因是Frame和JFrame的窗口层次结构不同,具体可参考中国铁道出版社的《Java完美经典》一书。JFrame的窗口包括:JFrame、Root Pane、Layered pane、ContentPane、Glass Pane;而Frmae窗口包括:Frame、ContentPane。所以解决的办法是将“this.setBackground(Color.RED);”代码改成“this.getContentPane().setBackground(Color.RED);”即可。