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

这段时间比较多,于是写一写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);”即可。

本文为博主原创文章,未经博主允许不得转载。
原文地址:https://www.cnblogs.com/you-well-day-fine/p/4671638.html