AWT 멀티 프레임 연동

//멀티프레임 연동
import java.awt.*;
import java.awt.event.*;

public class  MainDemo extends Frame implements ActionListener
{
	Button open;
	Dimension dm;   //프레임 사이즈 정보를 알기위한 
	SubFrame sub;
	public MainDemo(){
		super(":: MainDemo ::");
		setSize(400, 400);
		dm=getSize();  //프레임의 사이즈 정보를 담은 Dimension얻기
		setLayout(null);
		//좌표를 잡아 컴포턴트를 붙이거나, 
		//컴포턴트 사이즈를 주고 싶다면 레이아웃을 해제하고 사용
		open = new Button("OPEN");
		add(open);
		open.setSize(150,150);//버튼의 사이즈
		Dimension bdm=open.getSize(); //버튼의 사이즈 정보를 가짐
		int centerX=(dm.width/2)-(bdm.width/2);
		int centerY=(dm.height-bdm.height)/2;

		open.setLocation(centerX,centerY); //버튼이 올라갈 x,y좌표를 설정

		// 리스너 부착
		open.addActionListener(this);

		// 서브프레임 생성
		sub =new SubFrame();
		// 서브프레임의 close버튼에 리스너 부착
		sub.close.addActionListener(this);

		addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
	}//생성자-------

	public void actionPerformed(ActionEvent e) {
		Object o=e.getSource();
		if(o==open) {
		//1> SubFrame 객체를 생성하여 사이즈 정해주고 보여준다.
		
		
		//SubFrame sub = new SubFrame();
		// 서브프레임 close버튼에 리스너 부착---
                   //r,g,b값을 랜덤하게 주자 0-255
		  //Math.random()*범위 + 시작숫자
		 //   int r=(int)(Math.random()*256);
		 //	int g=(int)(Math.random()*256);
		 //	int b=(int)(Math.random()*256);
			java.util.Random rd=new java.util.Random();
			int r=rd.nextInt(256) + 0;
			int g=rd.nextInt(256) + 0;
			int b=rd.nextInt(256) + 0;


			sub.can.setBackground(new Color(r,g,b));

			sub.setSize(200,200);
			sub.setLocation(dm.width,0);
			sub.setVisible(true);
		}else if(o==sub.close) {
			// System.exit(0);  메인프레임까지 종료
			// sub.setVisible(false); 서브프레임 보이지 않게하는 효과
			sub.dispose();//Frame객체의 자원을 해제시킨다
		}
		
	}//------------
	
	public static void main(String[] args) 
	{
		MainDemo d=new MainDemo();
	/* 	d.setSize(500,500);
	    d.dm=d.getSize();
		System.out.println("d.dm.width:"+d.dm.width);
		System.out.println("d.dm.width:"+d.dm.height); */
		d.setVisible(true);
	}
}////////////////////////////////////

//메인 프레임에서 띄워줄 서브 프레임 클래스-----
class SubFrame extends Frame
{
	Canvas can;
	Button close;
	int r=100, g=100, b=100;
	public SubFrame() {
		can=new Canvas();
		add(can,"Center");
		can.setBackground(new Color(r,g,b));
		close=new Button("CLOSE");
		add(close, "South");
	}
}///////////////////////////