A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张 涛 中级黑马   /  2012-10-15 13:54  /  3416 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一个frame和一个panel,frame添加panel,如何设置二者颜色不同,我想看frame把panel添加到了什么位置。

评分

参与人数 1技术分 +1 收起 理由
田建 + 1

查看全部评分

3 个回复

倒序浏览
  1. import java.awt.BorderLayout;
  2. import java.awt.Color;
  3. import java.awt.Frame;
  4. import java.awt.Panel;
  5. import java.awt.event.WindowAdapter;
  6. import java.awt.event.WindowEvent;


  7. public class TestFrame extends Frame{
  8.         Panel panel =new Panel();
  9.         public TestFrame(){                               
  10.                 BorderLayout layout = new BorderLayout();//创建布局
  11.                 setBounds(300, 300, 300, 300);//设置窗口大小,屏幕位置
  12.                 setLayout(layout);//设置布局
  13.                 add(panel,layout.EAST);//设置panel位置
  14.                 panel.setBackground(Color.RED);//设置panel颜色
  15.                 setBackground(Color.BLUE);//设置Frame颜色
  16.                 setVisible(true);//设置窗口可见
  17.                 //窗口关闭监听
  18.                 addWindowListener(new WindowAdapter(){
  19.                         public void windowClosing(WindowEvent e){
  20.                                 System.exit(0);
  21.                         }
  22.                 });
  23.         }
  24.         public static void main(String[]args){
  25.                 new TestFrame();
  26.         }
  27. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
田建 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 张 涛 于 2012-10-15 14:10 编辑
  1. public class Test extends Frame{
  2.         Panel panel =new Panel();
  3.         public Test(){                                
  4.                 setBounds(300, 300, 300, 300);//设置窗口大小,屏幕位置
  5.                 panel.setBackground(Color.RED);//设置panel颜色
  6.                 panel.setSize(100,100);
  7.                 add(panel);
  8.                 setBackground(Color.BLUE);//设置Frame颜色
  9.                 setVisible(true);//设置窗口可见
  10.                 //窗口关闭监听
  11.                 addWindowListener(new WindowAdapter(){
  12.                         public void windowClosing(WindowEvent e){
  13.                                 System.exit(0);
  14.                         }
  15.                 });
  16.         }
  17.         public static void main(String[]args){
  18.                 new Test();
  19.         }
  20. }
复制代码
这样怎么看不出来,不设置布局方式不是使用默认的吗?

还有,出来的效果,panel和frame的大小一样,panel.setSize方法失效,是怎么回事
回复 使用道具 举报
张 涛 发表于 2012-10-15 14:07
这样怎么看不出来,不设置布局方式不是使用默认的吗?

还有,出来的效果,panel和frame的大小一样,panel.s ...

默认的布局是BorderLayout,如果你使用默认布局,且不指定新加入的控件的位置,默认是加到中间并覆盖整个窗口的大小,所以你看不到frame的颜色,根据后来者居上的原则,越后加入的控件,会覆盖掉前面所有的控件。在大部分布局下,setSize方法都是没有用的(setSzie方法用于设置固定大小,java大部分的布局都是可以让控件自动伸缩,所以使用这个方法无效)。要用setPreferredSize这个方法(设置最适合的大小)。参照我下面的例子吧。
  1. import java.awt.BorderLayout;
  2. import java.awt.Color;
  3. import java.awt.Dimension;
  4. import java.awt.Frame;
  5. import java.awt.LayoutManager;
  6. import java.awt.Panel;
  7. import java.awt.event.WindowAdapter;
  8. import java.awt.event.WindowEvent;

  9. public class Test extends Frame{
  10.         Panel panel =new Panel();
  11.         public Test(){      
  12.                 setBounds(300, 300, 300, 300);//设置窗口大小,屏幕位置
  13.                 panel.setBackground(Color.RED);//设置panel颜色
  14.                 add(panel,BorderLayout.WEST);//把panel的布局从默认的CENTER中,放到其他位置,可以是EAST,WEST,SOUTH,NORTH,CENTER
  15.                 //panel.setSize(100,100);//此方法无效
  16.                 panel.setPreferredSize(new Dimension(100,100));//设置panel大小
  17.                 setBackground(Color.BLUE);//设置Frame颜色
  18.                 setVisible(true);//设置窗口可见
  19.                 //窗口关闭监听
  20.                 addWindowListener(new WindowAdapter(){
  21.                         public void windowClosing(WindowEvent e){
  22.                                 System.exit(0);
  23.                         }
  24.                 });
  25.         }
  26.         public static void main(String[]args){
  27.                 new Test();
  28.         }
  29. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马