黑马程序员技术交流社区
标题:
怎么设置frame和panel为不同颜色
[打印本页]
作者:
张 涛
时间:
2012-10-15 13:54
标题:
怎么设置frame和panel为不同颜色
一个frame和一个panel,frame添加panel,如何设置二者颜色不同,我想看frame把panel添加到了什么位置。
作者:
qhasilver
时间:
2012-10-15 14:02
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Panel;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class TestFrame extends Frame{
Panel panel =new Panel();
public TestFrame(){
BorderLayout layout = new BorderLayout();//创建布局
setBounds(300, 300, 300, 300);//设置窗口大小,屏幕位置
setLayout(layout);//设置布局
add(panel,layout.EAST);//设置panel位置
panel.setBackground(Color.RED);//设置panel颜色
setBackground(Color.BLUE);//设置Frame颜色
setVisible(true);//设置窗口可见
//窗口关闭监听
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
public static void main(String[]args){
new TestFrame();
}
}
复制代码
作者:
张 涛
时间:
2012-10-15 14:07
本帖最后由 张 涛 于 2012-10-15 14:10 编辑
public class Test extends Frame{
Panel panel =new Panel();
public Test(){
setBounds(300, 300, 300, 300);//设置窗口大小,屏幕位置
panel.setBackground(Color.RED);//设置panel颜色
panel.setSize(100,100);
add(panel);
setBackground(Color.BLUE);//设置Frame颜色
setVisible(true);//设置窗口可见
//窗口关闭监听
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
public static void main(String[]args){
new Test();
}
}
复制代码
这样怎么看不出来,不设置布局方式不是使用默认的吗?
还有,出来的效果,panel和frame的大小一样,panel.setSize方法失效,是怎么回事
作者:
qhasilver
时间:
2012-10-15 18:57
张 涛 发表于 2012-10-15 14:07
这样怎么看不出来,不设置布局方式不是使用默认的吗?
还有,出来的效果,panel和frame的大小一样,panel.s ...
默认的布局是BorderLayout,如果你使用默认布局,且不指定新加入的控件的位置,默认是加到中间并覆盖整个窗口的大小,所以你看不到frame的颜色,根据后来者居上的原则,越后加入的控件,会覆盖掉前面所有的控件。在大部分布局下,setSize方法都是没有用的(setSzie方法用于设置固定大小,java大部分的布局都是可以让控件自动伸缩,所以使用这个方法无效)。要用setPreferredSize这个方法(设置最适合的大小)。参照我下面的例子吧。
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.LayoutManager;
import java.awt.Panel;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class Test extends Frame{
Panel panel =new Panel();
public Test(){
setBounds(300, 300, 300, 300);//设置窗口大小,屏幕位置
panel.setBackground(Color.RED);//设置panel颜色
add(panel,BorderLayout.WEST);//把panel的布局从默认的CENTER中,放到其他位置,可以是EAST,WEST,SOUTH,NORTH,CENTER
//panel.setSize(100,100);//此方法无效
panel.setPreferredSize(new Dimension(100,100));//设置panel大小
setBackground(Color.BLUE);//设置Frame颜色
setVisible(true);//设置窗口可见
//窗口关闭监听
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
public static void main(String[]args){
new Test();
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2