当前位置: 代码迷 >> Java相关 >> 关于java组件问题
  详细解决方案

关于java组件问题

热度:338   发布时间:2006-04-08 13:16:00.0
关于java组件问题
为什么JFrame组件一定要调用getContentPane().方法,而Frame组件就不用调用它,直接在对象后加上方法名就可以了?
比如下面的java程序:
import java.awt.*;
import javax.swing.*;
public class TestColor {
public static void main(String[] args) {
JFrame frame=new JFrame("TestColor");
frame.getContentPane().setBackground(Color.blue);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(600,600);
frame.show();
}
}
如果第六行改为frame.setBackground(Color.blue);则在运行时就只闪了一下背景颜色就没有了!
还有一个小问题Frame组件对象的关闭函数是什么?
搜索更多相关的解决方案: java  组件  frame  JFrame  import  

----------------解决方案--------------------------------------------------------

一个要调用getContentPane(),一个不要调用,这就是JFrame和Frame的区别
不过,现在都推荐使用javax.swing包里面的界面,所以现在一般都是用JFrame了
为什么你的背景会一闪就没有呢
问题就出在JFrame上,在JFrame里面,所有的东西都放在一个叫做“内容窗格”里面,这一点和Frame不一样,所以你不能放东西直接放在JFrame上,而要放在它的内容窗格上,所以你的放东西之间都得先得到它的内容窗格getContentPane(),所以最后被显示出来的内容是内容窗格的内容,所以,你修改了JFrame的背景是没有用的,它只是在刚刚被构造的一瞬间你看得见,当它把内容窗格放进去之后,就只显示内容窗格的内容了。
在javax.swing包里面,你想要一个组件没有,很方便,调用其方法setVisible(false)就可以了
你想要释放资源的话,调其dispose()方法就可以了,


----------------解决方案--------------------------------------------------------
哦,但还是看的迷迷糊糊的,自己基础太差呀!
----------------解决方案--------------------------------------------------------
JFrame是与AWT中的Frame相对应的Swing组件

JFrame只能有一个唯一的组件,这个唯一的组件就是JRootPane.

调用JFrame的getContentPane()方法,就可以获得JFrame中内置的JRootPane对象了。

所以我们不能在Frame对象上直接增加组件和设置布局管理器,而要在JRootPane对象上增加组件和设置布局管理器。

你那个闪一下的问题也可以这么理解:

你拿了一蒸锅(好比JFrame对象),想蒸包子(包子好比背景色),蒸锅都有一个蒸笼架子(好比JRootPane对象),

但是你不要蒸笼架子,直接就把包子扔锅里煮拉(你把包子扔到锅里的时候我们就只能看到它最后一眼了,最后就被水给煮溶了),

我们最后就吃不到包子拉(所以你就看不到背景色拉),所你只有把包子放到蒸笼格子里才能蒸出包子来嘛~
----------------解决方案--------------------------------------------------------
很贴切的比方,狐狸是三峡大学的呀!
----------------解决方案--------------------------------------------------------
通俗,易懂,不错
----------------解决方案--------------------------------------------------------
JRootPane是用来管理contentPane以及边缘部分和菜单栏部分的。。虽然JFrame是带了个J,但是它还是重量级的组件。。在设置背景的时候只能获得JRootPane的contentPane.

[此贴子已经被作者于2007-8-1 20:44:09编辑过]



----------------解决方案--------------------------------------------------------


----------------解决方案--------------------------------------------------------
  相关解决方案