Java/Excercise

swing ch05 EventListenerEx3

낭구리 2021. 9. 6. 16:59
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("안녕하세요");
	}

}

'Java > Excercise' 카테고리의 다른 글

swing ch05 EventListenerEx5  (0) 2021.09.06
swing ch05 EventListenerEx4  (0) 2021.09.06
swing ch05 EventListenerEx2  (0) 2021.09.06
swing ch05 EventListenerEx1  (0) 2021.09.06
generic ch05 Point  (0) 2021.09.06