Christmas Pikachu Button 리스너 등록 색 변경하기 - 1
개발일지/자바

Button 리스너 등록 색 변경하기 - 1

ZI_CO 2022. 9. 17.

 

 

 

 

 

 

n개의 버튼이 있으면 각각의 버튼 구분하는 방법

1. ( == ) 사용하는 방법

2. 다운캐스팅을해서 .equals를 사용하는 방법

 

( == ) 사용법

 

equals 사용법

 

 

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 ColorChangeListener extends JFrame implements ActionListener{
	
	JPanel centerPanel;
	JPanel bottomPanel;
	JButton redButton;
	JButton blueButton;
	
	public ColorChangeListener() {
		initData();
		setInitLayout();
		addEventListener();
	
	}
	
	private void initData() {
		setTitle("색 바꾸기");
		setSize(500, 500);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		centerPanel = new JPanel();
		bottomPanel = new JPanel();
		redButton = new JButton("빨강");
		blueButton = new JButton("파랑");
		
		
	}
	
	private void setInitLayout() {
		setVisible(true);
		this.setLayout(new BorderLayout()); // BorderLayout배치를 초기화를 해준다.
		this.add(centerPanel,BorderLayout.CENTER); // 초기화된 BorderLayout에 centerPanel을 중앙에 배치
		this.add(bottomPanel,BorderLayout.SOUTH); // 초기화된 BorderLayout에 bottomPanel을 맨밑에 배치
		centerPanel.setBackground(Color.CYAN); // 배치된 centerPanel의 배경색은 CYAN색으로 변경해준다.
		
		// 맨밑에 배치된 bottomPanel안에 정렬을 FlowLayout해주기위해 초기화를 해주고나서 가운대 배치를 위아래 간격 20으로 해준다.
		bottomPanel.setLayout(new FlowLayout(FlowLayout.CENTER,20,20));  
		bottomPanel.add(redButton); // 정렬이 정해졌으면 bottomPanel안에 redButton을 배치해준다.
		bottomPanel.add(blueButton); // bottomPanel안에 blueButton을 배치해준다.  (왼쪽부터 redButton, blueButton이 배치됨)
	
	}
	
	
	private void addEventListener() {
		redButton.addActionListener(this); // redButton에 addActionListener을 추가해준다. 
		blueButton.addActionListener(this);
		
	}
	
	@Override
	public void actionPerformed(ActionEvent e) {
		if(e.getSource() == redButton) { // redButton이 눌러졌을때 redButton이 맞을시에
			centerPanel.setBackground(Color.red); // centerPanel의 배경색을 빨간색으로 변경해준다.
		}else {
			centerPanel.setBackground(Color.blue); // 다른버튼(blueButton)이 눌러졌을시에 파란색으로 배경색이 변경이된다.
		}
		
	}
	
 public static void main(String[] args) {
	new ColorChangeListener();
}
}

 

댓글