关于Java中setLayout(null)的问题。

/*001*/importjava.awt.*;importjava.awt.event.*;/*002*/publicclasstestlocation/*003*/{... /*001*/ import java.awt.*;
import java.awt.event.*;
/*002*/ public class testlocation
/*003*/ {
/*004*/ public static void main( String args[])
/*005*/ {
/*006*/ Frame f = new Frame("frametitle");
/*007*/ f.setSize( 400,400);
/*008*/ f.setBackground( Color.blue);
/*009*/ //f.setLayout(null);
/*010*/ Button b1=new Button("Click Me");
/*011*/ Button b2=new Button("No");
/*012*/ f.add(b1);
/*013*/ f.add(b2);
/*014*/ b1.setLocation(100,100);
/*015*/ b1.setSize(50,50);
/*016*/ b2.setLocation(200,200);
/*017*/ b2.setSize(50,50);
/*018*/ f.setVisible( true);
/*019*/ f.addWindowListener(new WindowAdapter(){
/*020*/ public void windowClosing(WindowEvent e){
/*021*/ System.exit(0);
/*022*/ }
/*023*/ });
/*024*/ }
/*025*/ }
将第九行的“f.setLayout(null);”注释掉之后,发现按钮b2覆盖了整个窗口,而不是按设置的大小和位置排列,但是b1很正常。如图:
(求解,谢谢!)
展开
 我来答
华迷洪
2011-01-09 · 超过24用户采纳过TA的回答
知道答主
回答量:97
采纳率:100%
帮助的人:60.7万
展开全部
如果f.setLayout(null);则原设置位置和设置大小有效,如果才用默认的布局方式是flowLayout,则最后一个添加居中而且原设置位置和原设置大小都无效 ,如果要问我为怎么 我只能说java把这个方法写成这样 ,正如1+1=2 别问我1+1 为怎么等于2 我只能说规定为1+1=2
hsbfkwm
2011-01-10 · TA获得超过128个赞
知道答主
回答量:127
采纳率:0%
帮助的人:0
展开全部
JFrame默认的布局管理器是BorderLayout,你在往JFrame中添加面板的时候,如果不指定方向,会默认往Center中添加,这就显示的和你期望的有出入。
两种修改方式:1. 将JFrame的布局管理器修改为FlowLayout,再将控件的长度和宽度进行修改。2. 将add(p1)与add(p2)调换位置。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2011-01-08 · TA获得超过4630个赞
知道大有可为答主
回答量:1345
采纳率:50%
帮助的人:1612万
展开全部
如果不写f.setLayout(null);,默认的布局方式是flowLayout,居中对齐。当有布局方式存在时,你对控件的某些操作会失效,因为这些属性的都是布局管理器进行控制的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cuiweiqing1988
2011-01-08 · 超过16用户采纳过TA的回答
知道答主
回答量:54
采纳率:0%
帮助的人:35.6万
展开全部
/*001*/ import java.awt.*;
import java.awt.event.*;
/*002*/ public class testlocation
/*003*/ {
/*004*/ public static void main( String args[])
/*005*/ {
/*006*/ Frame f = new Frame("frametitle");
/*007*/ f.setSize( 400,400);
/*008*/ f.setBackground( Color.blue);

/*009*/ f.setLayout(new FlowLayout(FlowLout.LEFT));

/*010*/ Button b1=new Button("Click Me");
/*011*/ Button b2=new Button("No");
/*012*/ f.add(b1);
/*013*/ f.add(b2);
/*014*/ b1.setLocation(100,100);
/*015*/ b1.setSize(50,50);
/*016*/ b2.setLocation(200,200);
/*017*/ b2.setSize(50,50);
/*018*/ f.setVisible( true);
/*019*/ f.addWindowListener(new WindowAdapter(){
/*020*/ public void windowClosing(WindowEvent e){
/*021*/ System.exit(0);
/*022*/ }
/*023*/ });
/*024*/ }
/*025*/ }
将第九行的“f.setLayout(null);”注释掉之后,发现按钮b2覆盖了整个窗口,而不是按设置的大小和位置排列,但是b1很正常。如图:
(求解,谢谢!)
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式