当前位置:编程学习 > JAVA >>

关于LayoutManager的问题

import javax.swing.*;
import java.awt.*;

public class G extends JFrame
{
public G()
{
setLayout(new GridLayout());
JPanel p1 = new JPanel(new GridLayout(2, 1));
JPanel p2 = new JPanel(new BorderLayout());

p1.add(new JButton("B1"));
p2.add(p1, BorderLayout.EAST);
add(p2, BorderLayout.NORTH);
add(new JButton("B2"), BorderLayout.WEST);


}


public static void main(String[] args)  
{
G g = new G();

g.setSize(100, 100);
g.setLocationRelativeTo(null);
g.setVisible(true);

LayoutManager l = g.getLayout();

if (l instanceof FlowLayout)
{
System.out.println("l is FlowLayout\n");
}

if (l instanceof GridLayout)
{
System.out.println("l is GridLayout\n");
}

if (l instanceof BorderLayout)
{
System.out.println("l is BorderLayout\n");
}
}

}

输出结果为:l is BorderLayout。不明白为什么是这个答案,因为之前已经用了setLayout(new GridLayout());
请问这是什么原因? --------------------编程问答-------------------- this.add(p2, BorderLayout.NORTH);
楼主你这句话不是修改了layout吗? --------------------编程问答-------------------- 有点神奇。删掉那两句也是BordLayout --------------------编程问答--------------------
引用 1 楼  的回复:
this.add(p2, BorderLayout.NORTH);
楼主你这句话不是修改了layout吗?


没有这句呀,只是“add(p2, BorderLayout.NORTH);”,并没有“setLayout(new BorderLayout());”呀!但却可以执行“add(p2, BorderLayout.NORTH);”这句话。 --------------------编程问答-------------------- 楼主继承Frame就显示正常了,不然一直显示BorderLayout,其实还是自己设的布局吧。不知道为什么LayoutManager 为什么显示错误。 --------------------编程问答-------------------- 自己只是设了GridLayout布局管理器,并没有设BorderLayout,而且BorderLayout.NORTH是个字符串:
public static final String NORTH
自己手动设了GridLayout布局管理器,但返回后检测是BorderLayout?很奇怪
补充:Java ,  Java SE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,