JAVA(기본)

(JAVA) swing 이벤트 리스너(ActionListener) - 8

mynote6676 2025. 4. 29. 17:42
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