| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1526 人关注过本帖
标题:关于java组件问题
只看楼主 加入收藏
伯约
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2006-4-5
收藏
 问题点数:0 回复次数:7 
关于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 
2006-04-08 13:16
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 

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


可惜不是你,陪我到最后
2006-04-08 13:34
伯约
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2006-4-5
收藏
得分:0 
哦,但还是看的迷迷糊糊的,自己基础太差呀!

2006-04-08 13:50
晓狐狸
Rank: 2
等 级:新手上路
威 望:3
帖 子:95
专家分:0
注 册:2006-4-6
收藏
得分:0 
JFrame是与AWT中的Frame相对应的Swing组件

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

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

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

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

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

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

我们最后就吃不到包子拉(所以你就看不到背景色拉),所你只有把包子放到蒸笼格子里才能蒸出包子来嘛~

2006-04-10 01:21
球球
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:1146
专家分:265
注 册:2005-11-28
收藏
得分:0 
很贴切的比方,狐狸是三峡大学的呀!

好累
2006-04-10 10:39
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
通俗,易懂,不错

可惜不是你,陪我到最后
2006-04-10 13:57
狂放不羁
Rank: 4
等 级:贵宾
威 望:12
帖 子:925
专家分:0
注 册:2007-1-24
收藏
得分:0 
JRootPane是用来管理contentPane以及边缘部分和菜单栏部分的。。虽然JFrame是带了个J,但是它还是重量级的组件。。在设置背景的时候只能获得JRootPane的contentPane.

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


2007-08-01 20:38
jdk2006
Rank: 1
等 级:新手上路
帖 子:244
专家分:0
注 册:2007-5-12
收藏
得分:0 


2007-08-01 21:07
快速回复:关于java组件问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018096 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved