기본 윈도우창과 새창뛰우기 > 학습자료 | IOTsw_u2 U2 Project
학습자료

JAVA 기본 윈도우창과 새창뛰우기

본문

//개념잡기////////////////////////////////

 

메인메소드에서 생성자메소드 호출

생성자 메서드에서 프레임클래스를 상속받음  이때 액션리스너를 임플리먼트 해야 버튼을 이벤트를 사용할 수 있다.

 

extends 부모로부터 상속받음 


implements 인터페이스를 구현준비

Frame을 상속받고 ActionListener 인터페이스를 구현준비 한다.

 

//생성자 메소드

super();현재 자식클래스가 자신을 생성할때 부모 클래스의 생성자를 불러서 한번 초기화 해주고나서 자신을 초기화하는 것입니당.

즉 Frame을 한번 초기화 해주고 자신도 초기화 한다.


setSize(500, 500); 이렇게 크기만 지정해주면 프레임은 뜬다.


여기에

Panel 또는 Button 등을  프레임(자신에다가) 붙이이면 되는데 add.(만든버튼); this가 생략되어짐 즉 this.add(만든버튼)

붙이는 레이아웃을 설정해야 하고 안하면 

 

import java.awt.Color;

import java.awt.FlowLayout;

import java.awt.Frame;

import java.awt.Panel;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;


public class Member_psn extends Frame {

public Member_psn() {

Panel pan1 = new Panel(new FlowLayout());

pan1.setBackground(Color.red);

pan1.setSize(400, 800);


Panel pan2 = new Panel(new FlowLayout());

pan2.setBackground(Color.gray);

pan2.setSize(800, 800);


add(pan1);

add(pan2);

// 타이틀바 창닫기버튼 실행

addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

System.exit(0);

}

});

}


public static void main(String[] args) {

Member_psn d = new Member_psn();// 생성자 메소드 호출

d.setSize(1200, 800);

d.setVisible(true);

}

}


 

 

 

 

 

 

만든 버튼에는 리스너 인터페이스만 붙여놓고

별도에 메서드에서 해당 버튼이벤트를 감시 하면된다.

 

 

 

import java.awt.*;

import java.awt.event.*;

import java.lang.*;

import java.util.*;

 

public class Window extends Frame implements ActionListener {

Button open;

Dimension dm;

SubFrame sf;

 

public Window() {

super("::Window:");

 

// 프래임 재설정... 프레임의 사이즈 정보를 담은 DImension을 얻기 위해서

setSize(500, 500);

 

// 레이아웃 해제

// 좌표를 잡아 컴포넌트를 붙이거나,

// 컴포넌트 사이즈를 주고 싶다면 레이아웃을 해제하고 사용.

setLayout(null);

 

dm = getSize();

 

// 버튼 생성..

open = new Button("Open");

add(open);

 

// 버튼 사이즈

open.setSize(100, 100);

// 버튼의 사이즈 정보를 가짐.

Dimension bdm = open.getSize();

 

int centerX = dm.width / 2 - bdm.width / 2;

int centerY = (dm.height - bdm.height) / 2;

// 버튼 위치

open.setLocation(centerX, centerY);

 

// 리스너 부착.. 위에 implements했으니 this

open.addActionListener(this);

 

// Sub객체 딱 한번만 생성하기 위해서~

sf = new SubFrame();

 

// SubClass 리스너 부착

sf.close.addActionListener(this);

 

//타이틀바 창닫기버튼 실행

addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

System.exit(0);

}

});

} // 생성자 ----------------------------------------

 

//새창만들기

public void actionPerformed(ActionEvent e) {

// 1>SubFrame 객체를 생성하여 사이즈 정해주고 보여준다.

Object obj = e.getSource();

 

if (obj == open) {

sf.setSize(400, 200);

sf.setLocation(dm.width, 0);

sf.setVisible(true);

 

// r,g,b 값을 랜덤하게 주자...0~255

// Math.random()*j범위+시작숫자

// 컬러 객체의 RGB값을 받아서 값을 준당;;

int r = (int) (Math.random() * 256);

int g = (int) (Math.random() * 256);

 

// Random 메소드를 사용해 보자..

Random rd = new Random();

int b = rd.nextInt(256) + 0;

 

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

} else if (obj == sf.close) {

// 1. System.exit(0); 프로세스가 다 죽어..

// 2. setVisible 서브프래임 보이지 않게 하는 효과

// sf.setVisible(false);

 

sf.dispose(); // frame 객체의 자원을 해제시킨다.

}

 

}

 

//기본창 뛰우기////////////////////////

public static void main(String[] args) {

Window d = new Window();//생성자 메소드 호출

d.setSize(1000, 500);

d.setVisible(true);

//d.dm = d.getSize(); System.out.println("d.dm.width = "+d.dm.width); //창의크기

}

} ///////////////////////////////////////////////////////////////

 

///// 메인 프레임에서 띄어줄 서브 프레임 클래스 ///////////////////

class SubFrame extends Frame {

Canvas can;

Button close;

int r = 100, g = 100, b = 100;

 

public SubFrame() {

super("::SubFrame::");

can = new Canvas();

add(can, "Center");

 

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

 

close = new Button("CLOSE");

add(close, "South");

 

} // 생성자 ------------------------------

 

} ////////////////////////////////////////////////////////////////

댓글목록

학습자료 목록

Total 91건 2 페이지
게시물 검색

IOTsw_u2 정보

회사 . U2
주소 . 어느별 하늘 아래에 있것지요
사업자 등록번호 . 백수임 대표 . 김씨 전화 . 02-123-4567 팩스 . 팩스없음
통신판매업신고번호 . 낼할께 개인정보관리책임자 . 김씨가 알아서 함 부가통신사업신고번호 신고안함
Copyright © 2001-2013 U2. All Rights Reserved.
닫기