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

2025-03-01 06:09:34
推荐回答(4个)
回答1:

如果f.setLayout(null);则原设置位置和设置大小有效,如果才用默认的布局方式是flowLayout,则最后一个添加居中而且原设置位置和原设置大小都无效 ,如果要问我为怎么 我只能说java把这个方法写成这样 ,正如1+1=2 别问我1+1 为怎么等于2 我只能说规定为1+1=2

回答2:

JFrame默认的布局管理器是BorderLayout,你在往JFrame中添加面板的时候,如果不指定方向,会默认往Center中添加,这就显示的和你期望的有出入。
两种修改方式:1. 将JFrame的布局管理器修改为FlowLayout,再将控件的长度和宽度进行修改。2. 将add(p1)与add(p2)调换位置。

回答3:

如果不写f.setLayout(null);,默认的布局方式是flowLayout,居中对齐。当有布局方式存在时,你对控件的某些操作会失效,因为这些属性的都是布局管理器进行控制的。

回答4:

/*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很正常。如图:
(求解,谢谢!)