* 패키지(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 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] 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] |
댓글 ( 4)
댓글 남기기