package ch06;

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.JPanel;

public class ColorChange extends JFrame implements ActionListener {

	private JPanel panel;
	private JButton button1;
	private JButton button2;

	public ColorChange() {
		initDate();
		setInitLayout();
		addEventListener();
	}

	private void initDate() {
		setSize(500, 500);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		button1 = new JButton("버튼 1");
		button2 = new JButton("버튼 2");
		panel = new JPanel();
	}

	private void setInitLayout() {
		add(panel);
		panel.setBackground(Color.blue);
		panel.add(button1);
		panel.add(button2);
		setVisible(true);
	}

	private void addEventListener() {
		// this ->ColorChange->ActionListener 다형성 적용으로 이렇게도 볼수있다
		button1.addActionListener(this);
		button2.addActionListener(this);
	}

	// 테스트 코드
	public static void main(String[] args) {
		new ColorChange();

	}// end of main

	// 약속 되어진 메서드
	// 이벤트가 일어나면 운영체제가 actionPerformed를 불러준다
	@Override
	public void actionPerformed(ActionEvent e) {
		// e.getSource() -->
		// 다운 캐스팅 버튼
		JButton targetButton = (JButton) e.getSource();
		// targetButton.setText("눌러진 버튼입니다");
		System.out.println(targetButton.getText());

//		System.out.println(e.getSource());
//		if(e.getSource() == this.button1) {
//			panel.setBackground(Color.black);
//		}else {
//			panel.setBackground(Color.yellow);
//		}

		// 문제1
		// 문자열을 비교해서 색상을 변경 시키는 코드를 작성해주세요
		if (targetButton.getText().equals("버튼 1")) {
			panel.setBackground(Color.black);
		} else {
			panel.setBackground(Color.yellow);
		}

	}

}// end of class

 

 

'자바' 카테고리의 다른 글

디자인 패턴  (0) 2023.03.27
GUI 이벤트 리스너 예제  (0) 2023.02.21
GUI 이미지 겹치기  (0) 2023.02.21
try-catch 문  (0) 2023.02.21
예외 처리  (0) 2023.02.21

+ Recent posts