package _swing2;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
* 자바는 단일 상속만을 지원한다 . object클래스 제어ㅣ
* 이벤트 리스너에게 코드 작성해 보기
*/
//ActionListener (인터페이스) -->
public class ColorChangeFrame extends JFrame implements ActionListener {
private JButton button1;
public ColorChangeFrame(){
initData();
setInitLayout();
addEventListener();
}
private void initData(){
setSize(500,500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
button1 = new JButton("button1");
}
private void setInitLayout(){
setLayout(new FlowLayout());
add(button1);
setVisible(true);
}
private void addEventListener(){
button1.addActionListener(this);
}
//테스트 코드
public static void main(String[] args) {
new ColorChangeFrame();
}
//운영체제와 약속되어 있는 추상메서드를 오버라이드햇다
//이벤트가 발생되면 이메서드를 자동으로 재생해 (콜백) 미리 정해져 있는
//정보를 받을 수 있다,
//단, 어떤 컴포넌트가 이벤트를 실행시킬껀지 등록해주어야한다. //콜백메서드라고도 한다.
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("actionPerformed() 메서드가 호출 되었다.");
System.out.println(e.toString());
}
}
package _swing2;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class ColorChangeFrame2 extends JFrame implements ActionListener {
private JButton button1;
private JButton button2;
private JPanel panel;
public ColorChangeFrame2(){
initData();
setInitLayout();
addEeventListener();
}
private void initData(){
setSize(500,500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel = new JPanel();
button1 = new JButton("클릭1");
button2 = new JButton("클릭2");
};
private void setInitLayout(){
setLayout(new BorderLayout());
panel.setBackground(Color.YELLOW);
add(panel,BorderLayout.CENTER);
add(button1,BorderLayout.NORTH);
add(button2,BorderLayout.SOUTH);
setVisible(true);
};
//이 메서드의 책임은 이벤트 리스너만을 등록 처리한다
private void addEeventListener(){
button1.addActionListener(this);//다향성
button2.addActionListener(this);//다향성
};
@Override
public void actionPerformed(ActionEvent e) {
//JButton ->다운 캐스팅
JButton selectdButton =(JButton)e.getSource();
System.out.println(selectdButton);
System.out.println(selectdButton.getText());
//같은 객체의 주속밧을 가르키는 비교
if(selectdButton == button1){
panel.setBackground(Color.blue);
}else if (selectdButton == button2) {
panel.setBackground(Color.darkGray);
}
//도전과제
//어떻게 button1이 눌러졌는지 button2가 눌러져쓴지 구분할까
}
public static void main(String[] args) {
new ColorChangeFrame2();
}
}
클릭 1을 누르면
클릭 2를 누르면
'JAVA(기본)' 카테고리의 다른 글
(JAVA)반복문과 조건문 (0) | 2025.04.14 |
---|---|
(JAVA) 반복문 while (0) | 2025.04.14 |
(JAVA ) 반복문 (for) (0) | 2025.04.14 |
(JAVA) 조건문 if (만약 ~이라면) (0) | 2025.04.11 |
(JAVA) 연산자(관계, 논리,빠른평가,삼항) (0) | 2025.04.11 |