这段代码可以运行,可是我设置的Frame大小是400*400的,而程序运行时的Frame只是一闪就变的很小了。
小弟百思不得其解,哪位手能给解释一下,不盛感谢!!
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Button;
import java.awt.Color;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class MutableActive {
public static void main(String[] arg){
MyWindow window = new MyWindow(100,100,400,400);
window.pack();
}
}class MyWindow extends Frame implements Runnable{
Button b = new Button("OK");
int x = 5;
Thread thread = null;
MyWindow(int x,int y,int w,int h){
setBounds(x,x,w,h);
setLayout(new FlowLayout());
add(b);
b.setBackground(Color.GREEN);
setVisible(true);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e ){
setVisible(false);
System.exit(0);
}
});
thread = new Thread(this);
thread.start();
}

public void run(){
while(true){
x = x +1;
if(x > 100)x = 5;
b.setBounds(40,40,x,x);
try {
thread.sleep(20);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

}

解决方案 »

  1.   

    注釋掉 //window.pack();
    就好了
      

  2.   

    pack
    public void pack()调整此窗口的大小,以适合其子组件的首选大小和布局。如果该窗口和/或其所有者仍不可显示,则两者在计算首选大小之前变得可显示。在计算首选大小之后,将会验证该 Window。
      

  3.   

    注释掉window.pack()就可以了。
    public void pack()是类java.awt.Window里的方法。
    此方法会自动调整此窗口的大小,以适合其子组件的首选大小和布局。
    如果该窗口和/或其所有者还不可显示,则在计算首选大小之前都将变得可显示。
    在计算首选大小之后,将会验证该窗口。
    希望对你有帮助!