import java.awt.*;
public class TestMultiFrame {
public static void main(String[] args) {
MyFrame m1 =
new MyFrame(100, 100, 200, 200, Color.BLUE);
MyFrame m2 = 
new MyFrame(300, 100, 200, 200, Color.RED);
MyFrame m3 = 
new MyFrame(100, 300, 200, 200, Color.YELLOW);
MyFrame m4 = 
new MyFrame(300, 300, 200, 200, Color.CYAN);
}
}class MyFrame extends Frame {
static int id = 0;
MyFrame(int x, int y, int w, int h, Color c) {
super("MyFrame " +(++id));
setBackground(c);
setLayout(null);
setBounds(x, y, w, h);
  //setResizable(false);
setVisible(true);
}
}import java.awt.*;
public class TestMultiFrame {
public static void main(String[] args) {
MyFrame m1 =
new MyFrame(100, 100, 100, 100, Color.BLUE);
MyFrame m2 = 
new MyFrame(200, 100, 100, 100, Color.RED);
MyFrame m3 = 
new MyFrame(100, 200, 100, 100, Color.YELLOW);
MyFrame m4 = 
new MyFrame(200, 200, 100, 100, Color.CYAN);
}
}class MyFrame extends Frame {
static int id = 0;
MyFrame(int x, int y, int w, int h, Color c) {
super("MyFrame " +(++id));
setBackground(c);
setLayout(null);
setBounds(x, y, w, h);
  //setResizable(false);
setVisible(true);
}
}为什么第一个程序运行后的4个myFrame重叠 , 而第二个程序运行的后4个MyFrame会重叠? 各位大侠帮帮忙 ? 小弟感激不尽

解决方案 »

  1.   

    Frame是顶层窗口,是由边框的,所以你设置的宽度过低的话边框就会重叠起来吧。
    想让四个不重叠在Frame里面加四个Panel就可以了
      

  2.   

    public void setBounds(int x,
                          int y,
                          int width,
                          int height)移动组件并调整其大小。由 x 和 y 指定左上角的新位置,由 width 和 height 指定新的大小。 
    如果 width 值或 height 值小于之前调用 setMinimumSize 指定的最小大小,则它的值将自动增加。 
    覆盖:
    类 Component 中的 setBounds
    参数:
    x - 组件的新 x 坐标
    y - 组件的新 y 坐标
    width - 组件的新 width
    height - 组件的新 height   兄弟,仔细看看API。重叠是因为你的 x 坐标和y 坐标给的值有问题,再加上四个Frame 的大小都一样当然就重叠了。