黑马程序员技术交流社区
标题:
为什么添加JPanel后就把窗口覆盖了。
[打印本页]
作者:
zl918
时间:
2012-1-7 23:37
标题:
为什么添加JPanel后就把窗口覆盖了。
本帖最后由 zl918 于 2012-1-9 12:47 编辑
import java.awt.*;
import javax.swing.*;
import java.io.*;
public class MyFrame {
public static void main(String[] args)
{
JFrame frame=new JFrame("MyFrame"); //窗口框架
frame.setSize(800,300);
frame.getContentPane().setBackground(Color.RED); //背景
frame.setVisible(true); //窗口可见
JPanel contentPane=new JPanel(); //添加JPanel
contentPane.setSize(100,100);
contentPane.setBackground(Color.yellow);
frame.add(contentPane);
BufferedReader intemp=new BufferedReader(new InputStreamReader(System.in));
System.out.println("Press return key to exit!");
try
{
String s=intemp.readLine();
}catch(IOException e)
{
System.out.println("IOException");
}
System.exit(0);
}
}
复制代码
作者:
李林轩
时间:
2012-1-8 23:27
因为窗体的默认布局为BorderLayout(就是东西南北中)的方式,而你添加了一个JPanel,默认就放到了窗体的中间,而且只有他一个JPanel所以就覆盖了窗体。
窗体上是不可以放东西的,只有在JPanel上才可以放。以上是我的理解,如有错误请大家指正!
作者:
朱泽宇
时间:
2012-1-8 23:35
contentPane 的布局默认是麻将布局(东西南北中的那种),你没有设定它的布局(Layout)方式,它就默认是东西南北中五块划分整个Frame的。而其中没有设定元件位置(东西南北中)的话,就默认只在中间,而且不论你设定多大,都覆盖整个Frame,而且不论你设定多少个元件,都必定互相覆盖,只能显示一个。(何况你连一个元件都没设。。。。O__O"…)
另外,作为一个初学者一定要养成好习惯,setVisiable这么重要而且麻烦的东西,一定要放在最最最最后面。要么然干脆放在调用的方法里
作者:
小白
时间:
2012-1-9 09:31
你不设置布局,他会默认是边框布局,而且是在center这一块,你其他的位置没有放东西,所以看起来会被覆盖!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2