자바

 

 

 

 

 

 

* 패키지(package) : 디렉토리


    같은 패키지 안에서는 클래스 이름은 고유해야 함

 클래스 : 파일
 
 * 이벤트 소스 : 이벤트의 대상(where)


 * 이벤트 리스너 : 이벤트 감시 객체


 * 이벤트 핸들러 : 이벤트가 발생했을 때의 처리
 
 이벤트소스.이벤트리스너(이벤트핸들러)

 
 
  
 

 

 

class ActionEventTest1

package java10;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class ActionEventTest1 extends JFrame implements ActionListener {

	JButton button;
	JLabel label;
	
	//생성자
	public ActionEventTest1() {
		setSize(300, 200); //프레임의 사이즈 설정
		setDefaultCloseOperation(EXIT_ON_CLOSE); //메모리 닫기
		setTitle("이벤트 예제");
		//한 영역에 2개 이상의 컴포넌트를 묶어서 배치
		JPanel panel =new JPanel();
		button=new JButton("버튼을 누르세요");
		label =new JLabel("버튼을 누르지 않은 상태입니다.");
		
		//taget.add(컴포넌트)
		panel.add(button);
		panel.add(label);
		add(panel); //프레임에 패널 붙이기

		
		//이벤트 처리
		//이벤트소스.이벤트리스너(이벤트핸들러)

		//1. 내부클래스 (무명 (익명 클래스로 처리) 
//		button.addActionListener(new ActionListener() {
//			
//			@Override
//			public void actionPerformed(ActionEvent e) {
//				label.setText("버튼을 눌렀습니다");
//			}
//		});
//		

		//2. 람다식 처리
/*		button.addActionListener((e)->{
			label.setText("버튼을 눌렀습니다");
		});
		*/
		
		//3. 이벤트 핸들러를 따라 정의 (코드 재사용)
		button.addActionListener(new MyListener());
		
		//4. implements ActionListener 방법 
		// 현재 클래스를 자체적으로 처리
		button.addActionListener(this);
		
		setVisible(true);
		
	}
	
	
	class MyListener implements ActionListener{
		
		@Override
		public void actionPerformed(ActionEvent e) {
			
			label.setText("버튼을 눌렀습니다");
		}
		
		
	}
	
	
	public static void main(String[] args) {
		new ActionEventTest1();
	}


	@Override
	public void actionPerformed(ActionEvent e) {
		label.setText("버튼을 눌렀습니다");
	}
	
	
}

 

 

 

 

 

 

class ActionEventTest2

package java10;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class ActionEventTest2 extends JFrame {
 
	JButton btnRed, btnGreen, btnBlue;
	JPanel panel;
	
	public ActionEventTest2() {
	
		btnRed =new JButton("Red");
		btnGreen=new JButton("Green");
		btnBlue=new JButton("blue");
		
		//패널(컴포너트들을 담는 그릇) 생성
		panel=new JPanel();
		panel.add(btnRed);
		panel.add(btnGreen);
		panel.add(btnBlue);
		
				
		add(panel);
/*		
		//이벤트 처리
		btnRed.addActionListener(
				e ->panel.setBackground( Color.red)
		);
		
		btnGreen.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				
				panel.setBackground(Color.GREEN);
				
			}
		});
		
		btnBlue.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				panel.setBackground(Color.blue);
			}
		});
		*/
		
		btnRed.addActionListener(listener);
		btnBlue.addActionListener(listener);
		btnGreen.addActionListener(listener);
		
		
		setSize(300, 400);
		setVisible(true);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		//윈도우 닫기
	}
	
	
	public static void main(String[] args) {
		new ActionEventTest2();
	}
	
	
	ActionListener listener =new ActionListener() {
		
		@Override
		public void actionPerformed(ActionEvent e) {
			
			//System.out.println(e);
			
			// e.getSource() 이벤트가 발생한 객체의 주소값
			//showMessageDialog(부모컨테이너, 메시지)
			//버튼의 라벨
			System.out.println(e.getActionCommand());
			//=> Red, Green, Blue 출력 
			
			// e.getSource() 또는 e.getActionCommand() 사용
			// e.getSource() 중복될 염려가 없다.
			if(e.getSource() ==btnRed){
				JOptionPane.showMessageDialog(ActionEventTest2.this, "Red 버튼을 눌렸습니다.");	
				panel.setBackground(Color.red);	
			}else if(e.getSource() ==btnGreen){
				JOptionPane.showMessageDialog(ActionEventTest2.this, "Green 버튼을 눌렸습니다.");
				panel.setBackground(Color.GREEN);
			}else if(e.getSource()== btnBlue){
				JOptionPane.showMessageDialog(ActionEventTest2.this, "Blue 버튼을 눌렸습니다.");
				panel.setBackground(Color.BLUE);
			}
					
			
		}
	};
}




 

 

java.awt.event.ActionEvent[ACTION_PERFORMED,cmd=Red,when=1493112557522,modifiers=Button1] o

javax.swing.JButton[,46,5,56x26,alignmentX=

0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResou
Red
java.awt.event.ActionEvent[ACTION_PERFORMED,cmd=Green,when=1493112559674,modifiers=Button1] on

javax.swing.JButton[,107,5,68x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.Border

 

UIResource$CompoundBorderUIResource@1c1193c3,flags=296,maximumSize=,minimumSize=,

preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource

[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon

=,rolloverSelectedIcon=,selectedIcon=,text=Green,defaultCapable=true]
Green
java.awt.event.ActionEvent[ACTION_PERFORMED,cmd=blue,when=1493112561418,modifiers=Button1] on javax.swing.

JButton[,180,5,58x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource

$CompoundBorderUIResource@1c1193c3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,

disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],

paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=

,text=blue,defaultCapable=true]
blue

 

 

 

 

about author

PHRASE

Level 60  머나먼나라

약방에 감초 , [한방에 꼭 들어가는 약재인 감초처럼] 어떤 일에나 빠짐없이 끼여드는 사람, 또는 사물을 이르는 말.

댓글 ( 4)

댓글 남기기

작성