JFrame f = new JFrame("Title"); Show 인자는 3가지가 존재.. 1. DISPOSE_ON_CLOSE : 프레임과 컴포넌트를 종료(하지만 완전한 종료는 아님. 종료시에는 이벤트를 사용) 2. DO_NOTHING_ON_CLOSE : 프레임과 창닫기 작업을 무효화 3. HIDE_ON_CLOSE : false를 인수로 setVisible()메소드를 호출하여 윈도우를 숨김. setDefaultCloseOperation()메소드를 호출하지 않으면 이것이 기본 작업이 됨. 윈도가 숨겨진 후, true를 이누로 setVisible()을 호출하면 언제라도 다시 표시할 수 있음. //멀티프레임 연동 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"); } }/////////////////////////// <명품 자바 에센셜> 8장 자바 GUI 스윙 기초 내용 정리 목차 ☕ 자바의 GUI와 스윙(Swing) 응용프로그램 시작하기 1️⃣ 자바의 GUI GUI 응용프로그램이란? AWT와 Swing 패키지 스윙 GUI 응용프로그램 샘플 2️⃣ 자바의 GUI 패키지 GUI 패키지 계층 구조 컨테이너와 컴포넌트 3️⃣ 스윙 GUI 프로그램 만들기 1. 스윙 프레임 작성 2. 프레임에 컴포넌트 붙이기 1️⃣ 자바의 GUIGUI 응용프로그램이란?
AWT와 Swing 패키지
AWT 🆚 Swing
스윙 GUI 응용프로그램 샘플
2️⃣ 자바의 GUI 패키지GUI 패키지 계층 구조AWT와 스윙 패키지의 주요 클래스의 상속 관계는 다음과 같다.
컨테이너와 컴포넌트
3️⃣ 스윙 GUI 프로그램 만들기스윙 응용프로그램을 만들기 위한 과정은 다음과 같다.
1. 스윙 프레임 작성스윙 프레임과 컨텐트팬
프레임 만들기, JFrame 클래스 상속
스윙 응용프로그램에서 main() 메소드
2. 프레임에 컴포넌트 붙이기타이틀 달기
컨텐트팬에 컴포넌트 달기
스윙 응용프로그램의 종료
|