java简单问题:窗口的内容面板(getContentPane())调用问题,请教!

书上说:swing里的容器都可以添加组件,除了JPanel及其子类(如JAppelet)之外,其他的swing容器不允许把组件直接加入。

1.这句话是对的错的?没理解。
比如这段代码:
1 public class 实验
2 {
3 public static void main(String args[])
4 {
5 JFrame mw=new JFrame("我的第一个窗口");
6 mw.setSize(250,200);
7 JButton button=new JButton("我是一个按钮");
8 mw.getContentPane().add(button);
9 mw.setVisible(true);
10 }
11 }
就是第10行那有疑问:
这个语句我看懂了,每个窗口都带个内容面板,调用它
但是我直接mw.add(button)为什么也可以,上机也可以运行?
还有些别的题也是,一会add直接添加,一会又定义个Container x=getContentPane(); 然后比如f是窗口对象,f.add(x); 的
书上说不是不让调用么。。。
新手初学,getContentPane怎么用,迷糊中,望高手解答谢!满意追加!
错了,是第八行。

直接用add添加的是因为类继承了JFrame或其子类.
如你说的窗口对象就是这种情况,该类的实例就是一个容器

另外:
Container contentPane = frame.getContentPane();
contentPane.add(button);

刚开始是有点混乱,以后会慢慢熟悉的!
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-08-27
JFrame的add方法是从Container类基础的..

里面只要是Component对象都能add..Component是所有组件的父类..

所以里面基本上什么组件都能加..

你那书上应该就是在扯淡了吧...

getContentPane就是返回这个窗体的contentPane 对象

比如你得到后可以在里面加个button啊..什么的..也可以直接加..方式很多..
相似回答