//멀티프레임 연동
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");
}
}///////////////////////////
