Christmas Pikachu Button 리스너 등록 색 변경하기 - 2 (익명, 구현클래스)
개발일지/자바

Button 리스너 등록 색 변경하기 - 2 (익명, 구현클래스)

ZI_CO 2022. 9. 17.

이번에는 ActionListener을 구현(implement)을 안하고 ActionListener인터페이스를 구현클래스(익명클래스)로 만들어서 

ActionListener 등록하는 방법이다.

 

리스너를 사용하는 방법이 2가지가 있는것이다

 

프로그램의 실행 결과는 똑같다

 

 

 

 

package blogpractice;

import java.awt.BorderLayout;
import java.awt.Color;
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;

public class ColorChangeListener2 extends JFrame {

	JButton redButton;
	JButton blueButton;
	JPanel centerPanel;
	JPanel bottomPanel;

	ActionListener listener = new ActionListener() {

		@Override
		public void actionPerformed(ActionEvent e) {
			if(e.getSource() == redButton) {
				centerPanel.setBackground(Color.red);
			}else {
				centerPanel.setBackground(Color.blue);
			}
		}
	};

	public ColorChangeListener2() {
		initData();
		setInitLayout();
		addEventListener();
	}

	private void initData() {
		setTitle("구현클래스이용해서 리스너 등록");
		setSize(500, 500);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		redButton = new JButton("빨강");
		blueButton = new JButton("파랑");

		centerPanel = new JPanel();
		bottomPanel = new JPanel();

	}

	private void setInitLayout() {
		setVisible(true);
		setLayout(new BorderLayout());
		add(centerPanel, BorderLayout.CENTER);
		add(bottomPanel, BorderLayout.SOUTH);
		centerPanel.setBackground(Color.CYAN);

		bottomPanel.setLayout(new FlowLayout(FlowLayout.CENTER,20, 20));
		bottomPanel.add(redButton);
		bottomPanel.add(blueButton);
	}

	private void addEventListener() {
		redButton.addActionListener(listener);
		blueButton.addActionListener(listener);
	}

	public static void main(String[] args) {
		new ColorChangeListener2();
	}
	
}

댓글