본문 바로가기

JAVA/JAVA

자바 예제 - inner 클래스 만들어지는 과정

반응형

inner 클래스 예제


<Frame 을 이용해 inner 클래스 만들어지는 과정>


메뉴얼에 java.awt 는 GUI를 모아놓은 것들

그 안에서 Frame 은 창을 만들 수 있는 클래스


사용방법 두가지

1. 자바가 제공하는 Frame을 생성하여 사용하는 방법

2. 자바가 제공하는 Frame을 확장하여 사용하는 방법


(설정하는 메소드는 set이 앞에 붙어있음)


<순서>

1. 기본구성


2. MyEvent 클래스를 Hanb 클래스 안에 넣기 전


3. MyEvent를 Hanb 클래스안에 넣은 후 

( MyEvent 클래스는 Hanb클래스에서만 필요하고 다른곳에서는 필요없기에 굳이 따로 만들 필요가 없음)

밖에 해도 되고 다른 파일로 만들어도 되겠지만 Hanb 클래스안에 넣음


4. new MyEvent를 굳이 생성안하고 바로 넣어도 되지 않니

굳이 MyEvent 클래스를 굳이 만들어야 되니

ActionListener 인터페이스를 구현한 이름없는 객체를 만들 수 있지 않겠니


5. 이벤트처리를 위한 별도의 클래스를 만들지 않고 HanbFrame 프레임 이면서 이벤트처리 담당이 되는것




예제1)


import java.awt.*;

import java.awt.event.*;


// 버튼 눌렀을때 일처리를 위한 클래스

class MyEvent implements ActionListener{ 

public void actionPerformed(ActionEvent e){

System.out.println("눌렀네?");

}

}


class FrameTest{

public static void main(String[] args) {

Frame f = new Frame("첫번째 창만들기"); // 창 만들기

f.setSize(400,300); // window클래스에 있는 동작임

f.setVisible(true); // 창만든 것을 보여주는 메소드 ( boolean 값)


//창에 버튼 만들기

Button btn = new Button("눌러"); //"" 여기에는 버튼생성시에 나타날 글자를 씀(Label이라고함)


f.setLayout(new FlowLayout()); // 물 흐르듯이 배치해달라는 것


//프레임에 버튼을 담아주는 명령 (Frame에 가서 찾고 없으면 상속계층 찾기)

//container에 가면 add 4가지가 있음

f.add(btn); // 이렇게만 하면 창의 모든공간을 차지함(그래서 위에 layout 사용함)


// 지금까지 위에 한것으로는 버튼을 눌러도 아무것도 동작하지 않는다.

// 버튼을 눌러 동작하게 하는 것을 "이벤트 처리"라고 함


// 버튼 눌렀을때 처리할 객체 설정 메소드"이벤트 등록"이라고 함(Button class 에 있음)

// 그래서 위에 클래스 정의 한것이 "이벤트 등록임"


//버튼이 눌러졌을때 일처리를 위한 객체 생성

MyEvent ev = new MyEvent();

//button에 등록해줘야 하기에 addActionListener 메소드를 사용

btn.addActionListener(ev);

}

}




예제2) 


import java.awt.*;

import java.awt.event.*;


// 버튼 눌렀을때 일처리를 위한 클래스

class MyEvent implements ActionListener{ 

public void actionPerformed(ActionEvent e){

System.out.println("눌렀네?");

}

}


// Frame 이 되고 싶은 클래스

// HanbFrame is a Frame 성립됨

class HanbFrame extends Frame{

public HanbFrame(String title){

super(title);

setSize(400,300); // Frame에 있는 모든 동작 가능

setVisible(true); 


setLayout(new FlowLayout()); // 버튼 크기 물흐르듯이 해줘


Button btn = new Button("눌러");

add(btn);


MyEvent ev = new MyEvent();// Button에 이벤트 등록

btn.addActionListener(ev);//Button 을 눌렀을때 동작하게 해줘

}

}


class FrameTest03{

public static void main(String[] args) {

HanbFrame f = new HanbFrame("첫번째 프레임"); // 이거저거 만들필요없이 이문장만 있으면 동작가능

}

}




예제3) 


import java.awt.*;

import java.awt.event.*;



// Frame 이 되고 싶은 클래스

// HanbFrame is a Frame 성립됨

class HanbFrame extends Frame{


// 버튼 눌렀을때 일처리를 위한 클래스

class MyEvent implements ActionListener{ 

public void actionPerformed(ActionEvent e){

System.out.println("눌렀네?");

}

}


public HanbFrame(String title){

super(title);

setSize(400,300); // Frame에 있는 모든 동작 가능

setVisible(true); 


setLayout(new FlowLayout()); // 버튼 크기 물흐르듯이 해줘


Button btn = new Button("눌러");

add(btn);


MyEvent ev = new MyEvent();// Button에 이벤트 등록

btn.addActionListener(ev);//Button 을 눌렀을때 동작하게 해줘


}

}


class FrameTest03{

public static void main(String[] args) {

HanbFrame f = new HanbFrame("첫번째 프레임"); // 이거저거 만들필요없이 이문장만 있으면 동작가능

}

}




예제4)


import java.awt.*;

import java.awt.event.*;


// Frame 이 되고 싶은 클래스

// HanbFrame is a Frame 성립됨

class HanbFrame extends Frame{

/*

// 버튼 눌렀을때 일처리를 위한 클래스

class MyEvent implements ActionListener{ 

public void actionPerformed(ActionEvent e){

System.out.println("눌렀네?");

}

}

*/

public HanbFrame(String title){

super(title);

setSize(400,300); // Frame에 있는 모든 동작 가능

setVisible(true); 


setLayout(new FlowLayout()); // 버튼 크기 물흐르듯이 해줘


Button btn = new Button("눌러");

add(btn);


// MyEvent ev = new MyEvent();// Button에 이벤트 등록

//btn.addActionListener(new MyEvent()); //new MyEvent를 안에 넣어도 상관없음 ev 대신에

btn.addActionListener(new ActionListener{ 

public void actionPerformed(ActionEvent e){

System.out.println("눌렀네?");

}

}); // 클래스를 굳이 안만들고 ActionListener인터페이스를 구현한 이름없는 객체를 만듬

}

}


class FrameTest04{

public static void main(String[] args) {

HanbFrame f = new HanbFrame("첫번째 프레임"); // 이거저거 만들필요없이 이문장만 있으면 동작가능

}

}




예제5) 

import java.awt.*;

import java.awt.event.*;



// Frame 이 되고 싶은 클래스

// HanbFrame is a Frame 성립됨

class HanbFrame extends Frame implements ActionListener { //

//actionPerformed 재정의 하기

public void actionPerformed(ActionEvent e){

System.out.println("눌렀네?");

}


public HanbFrame(String title){

super(title);

setSize(400,300); // Frame에 있는 모든 동작 가능

setVisible(true); 


setLayout(new FlowLayout()); // 버튼 크기 물흐르듯이 해줘


Button btn = new Button("눌러");

add(btn);


//this 란 '나','나자신' 라는 것을 말해주는 것

btn.addActionListener(this);//Button 을 눌렀을때 동작하게 해줘

}

}


class FrameTest05{

public static void main(String[] args) {

HanbFrame f = new HanbFrame("첫번째 프레임"); // 이거저거 만들필요없이 이문장만 있으면 동작가능

}

}


반응형