关于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很正常。如图:
(求解,谢谢!) 展开
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很正常。如图:
(求解,谢谢!) 展开
展开全部
JFrame默认的布局管理器是BorderLayout,你在往JFrame中添加面板的时候,如果不指定方向,会默认往Center中添加,这就显示的和你期望的有出入。
两种修改方式:1. 将JFrame的布局管理器修改为FlowLayout,再将控件的长度和宽度进行修改。2. 将add(p1)与add(p2)调换位置。
两种修改方式:1. 将JFrame的布局管理器修改为FlowLayout,再将控件的长度和宽度进行修改。2. 将add(p1)与add(p2)调换位置。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果不写f.setLayout(null);,默认的布局方式是flowLayout,居中对齐。当有布局方式存在时,你对控件的某些操作会失效,因为这些属性的都是布局管理器进行控制的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
/*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很正常。如图:
(求解,谢谢!)
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很正常。如图:
(求解,谢谢!)
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询