关于JFrame和JPanel问题

来源:百度知道 编辑:UC知道 时间:2024/09/21 22:05:07
1、add()和getContentPane()的区别?
2、add(JPanel对象)、JPanel对象=(JPanel)getContent()、setContentPane(JPanel)三者有何不同?

getContentPane()
这个方法要调用首先,你的类要是JFrame(或是继承JFrame的子类)
add()是任何JComponent都可以调用的,JPanel也可以,但是JFrame不可以,所以在JFrame里添加任何东西比如按键,就需要先getContentPane()(这东西返回的是Container,可以看做一个Container)
所以很多人写作getContentPane().add(new JButton(XXX))

Container cp = getContentPane();
cp.add(screen);
cp.add(input);

这是一段我自己的代码,cp指向获得的Container,
然后添加东西进去

add(XXX),XXX即为你要添加到JFrame,也就是你这个最大的窗口里的东西
而getContentPane()是不要写参数的,返回的即为你JFrame里的JPanel

JPanel对象=(JPanel)getContentPane(),是首先获得这个窗口(JFrame)的Container,然后用(JPanel)把它转换成JPanel, 你所写的对象就可以用 对象.add(XXX)来添加东西了

setContentPane(JPanel),事实上参数是Container,也就是替代原有的Container(也就是我们用getContentPane()得到的),而JPanel是Container的子类,可以作为参数。用这个方法,就要先建一个JPanel,然后用它替换原有的Container

add是添加,getContentPane()是获取内容窗体的意思,setContentPane()是设置窗体的意思,只要你理解了他们的意思,其实不难分辨

1.JFrame默认是有Pane的,所以,你直接add(某个组件)的话,就会将其加入到默认的Pane上去,getContentPane()的话是取得当前JFrame上的Pane,不过如果你setContentPane(某个Panel)的话,那么getCont