java高手:java的awt中Frame的setSize()和setVisible()有先后顺序吗?

来源:百度知道 编辑:UC知道 时间:2024/07/02 15:06:49
import java.awt.*;
public class TestBorder
{
public static void main(String[] args)
{
Frame f = new Frame("border");
Button bc = new Button("ce");
Button bn = new Button("no");
Button bl = new Button("le");
Button br = new Button("ri");
Button bo = new Button("bo");
f.add(bl, BorderLayout.WEST);
f.add(bn,BorderLayout.NORTH);
f.add(bc, BorderLayout.CENTER);
f.add(br, BorderLayout.EAST);
f.add(bo, BorderLayout.SOUTH);
f.setSize(300,300);
f.setVisible(true);//这后面的两句改了顺序运行
//结果不一样,现在这个顺序正常运行,两句颠倒后,只显示“no”这
//一个按钮,放大后才正常显示,不知是为什么?
}
}

你的程序在我电脑上运行的时候,不管后面两句的顺序是什么,结果都一样啊!
不过你的不一样也可以理解,因为f.setVisible(true);这句话一般都放在最后的,他表示显示frame上的所有东西,因为你把f.setSize(300,300);放在后面了,所以在它显示的时候并不确定窗口的大小。我觉得和你的电脑也有点问题吧,因为程序有时候就是很奇怪的啊!

f.setSize(300,300);
f.setVisible(true);
没有顺序问题,你那个出现的问题是另外的原因引起的。

setVisible是设置它的可见属性,会自动刷新,而setSize只是设置界面大小,它不会去刷新界面,所以要手动去改变Frame才会调用界面刷新。
试在后面调用一下pack();方法。

其实java在代码上,的确有顺序的问题。特别是在swt和swing中。我觉得不用在这个上花费时间了。