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