首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

J2SE的关于格局管理器的疑惑

2012-09-28 
J2SE的关于布局管理器的疑惑[codeJava][/code]package yangwei.ticketimport java.awt.Containerimport

J2SE的关于布局管理器的疑惑
[code=Java][/code]

package yangwei.ticket;

import java.awt.Container;
import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class JPanelTest extends JPanel{

public JPanelTest()

{
setLayout(null);

}

public static void main(String [] args)
{
JFrame FrameTest = new JFrame();
JButton button1 = new JButton();
JButton button2 = new JButton();
button1.setBounds(50, 50, 50, 50);
button2.setBounds(100, 50, 50, 50);
JPanelTest testpanel = new JPanelTest();
//testpanel.setLayout(new FlowLayout());
testpanel.setLayout(null);
testpanel.add(button1);
testpanel.add(button2);
FrameTest.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
FrameTest.setSize(500,500);
FrameTest.setLayout(null);//注释掉这一句Buttons就可以显示了
FrameTest.add(testpanel);
FrameTest.setVisible(true);
}

}

就比如上面这段代码当把JPanel和JFrame的布局同时设置为null时JPanel中的button就不能显示了,但如果把JFrame
中的
FrameTest.setLayout(null)
注释掉就没有问题了,请问这个是为什么呢?有人能解释下吗?

[解决办法]
setLayout(null),也即使用“无布局”或“绝对定位布局”模式。

这种情况下,布局管理器不会自动设置控件大小,所以也就没得显示了。

你需要对每个控件设置其位置与大小: setBounds()
[解决办法]
如果你把JFrame的Layout也设为NULL那么你的testpanel也要设置它所在的位置加上这句

Java code
        testpanel.setBounds(0, 0, 400, 200);//这句要添加,因为你没有设置testpanle的位子
[解决办法]
探讨

如果你把JFrame的Layout也设为NULL那么你的testpanel也要设置它所在的位置加上这句Java code
testpanel.setBounds(0, 0, 400, 200);//这句要添加,因为你没有设置testpanle的位子

热点排行