黑马程序员技术交流社区

标题: 为什么添加JPanel后就把窗口覆盖了。 [打印本页]

作者: zl918    时间: 2012-1-7 23:37
标题: 为什么添加JPanel后就把窗口覆盖了。
本帖最后由 zl918 于 2012-1-9 12:47 编辑
  1. import java.awt.*;
  2. import javax.swing.*;
  3. import java.io.*;
  4. public class MyFrame {
  5.         public static void main(String[] args)
  6.         {
  7.                 JFrame frame=new JFrame("MyFrame");                 //窗口框架
  8.                 frame.setSize(800,300);            
  9.                 frame.getContentPane().setBackground(Color.RED);    //背景
  10.                 frame.setVisible(true);                             //窗口可见
  11.                
  12.                 JPanel contentPane=new JPanel();            //添加JPanel
  13.                 contentPane.setSize(100,100);
  14.                 contentPane.setBackground(Color.yellow);
  15.                 frame.add(contentPane);
  16.                
  17.                
  18.                 BufferedReader intemp=new BufferedReader(new InputStreamReader(System.in));
  19.                 System.out.println("Press return key to exit!");
  20.                 try
  21.                 {
  22.                         String s=intemp.readLine();
  23.                 }catch(IOException e)
  24.                 {
  25.                         System.out.println("IOException");
  26.                 }
  27.                 System.exit(0);
  28.         }

  29. }
复制代码

作者: 李林轩    时间: 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