package ch05;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
class ColorChangeFrame extends JFrame implements ActionListener{
BorderLayout borderLayout;
JPanel panel1;
JPanel panel2;
JButton button1;
JButton button2;
JButton button3;
public ColorChangeFrame() {
initData();
setInitLayout();
addEventListener();
}
private void initData() {
setTitle("이벤트 리스너 연습3");
setSize(500,500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
borderLayout = new BorderLayout();
panel1 = new JPanel();
panel1.setBackground(Color.gray);
panel1.setPreferredSize(new Dimension(500,400)); //panel1의 사이즈 지정
panel2 = new JPanel(new FlowLayout());
button1 = new JButton("빨간색");
button2 = new JButton("노란색");
button3 = new JButton("파란색");
}
private void setInitLayout() {
setVisible(true);
this.setLayout(borderLayout);
add(panel1, BorderLayout.NORTH); //패널을 위아래
add(panel2, BorderLayout.SOUTH);
panel2.add(button1);
panel2.add(button2);
panel2.add(button3);
}
private void addEventListener() {
button1.addActionListener(this);
button2.addActionListener(this);
button3.addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent e) {
JButton targetBtn = (JButton)e.getSource();
//다운그레이드 e.getSource()를 JButton으로 다운그레이드
//if()
//버튼 1번이 눌러졌다면
//panel1.setBackground(Color.red);
//버튼 2번이 눌러졌다면
//panel2.setBackground(Color.yellow);
if(targetBtn.getText().equals(this.button1.getText())) {
panel1.setBackground(Color.red);
}else if(targetBtn.getText().equals(this.button2.getText())) {
panel1.setBackground(Color.yellow);
}else {
panel1.setBackground(Color.blue);
}
}
}
public class EventListenerEx3 {
public static void main(String[] args) {
// new ColorChangeFrame(); 메모리만 올리는게 끝 -익명클래스
//익명클래스 (인스턴수 변수가 없기때문에 지속적으로 접근해서 사용 할 수 없다.)
ColorChangeFrame ccf1 = new ColorChangeFrame();
//변수라는 이름을 지정해서 찾아갈수있도록 만들어줌
ccf1.button1.setText("안녕하세요");
}
}