[JAVA] ActionEvent 예제_2

정은아·2022년 8월 5일
package ja_0805;

import java.awt.Button;
import java.awt.Color;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class P_1 extends Frame implements ActionListener{
	
	Label lbl_info;
	Button[] btn = new Button[9];
	Color[] color = {Color.red, Color.orange, Color.yellow,
					 Color.green, Color.magenta, Color.cyan, Color.gray,
					 new Color(0,0,0), new Color(255, 255, 255)};
	
	String[] string = {"Red", "Orange", "Yellow", "Green", "Magenta", "Cyan", "Gray"
						, "Black", "White"};
	
	Panel panel1, panel2, panel3, panel4, panel5;
	
	public P_1(String title)
	{
		super(title);
		
		panel1 = new Panel();
		panel2 = new Panel();
		panel3 = new Panel();
		panel4 = new Panel();
		panel5 = new Panel();
		
		panel4.setLayout(new GridLayout(1,3));
		
		for (int i = 0; i < 9; i++) 
		{
			btn[i] = new Button(string[i]);
			btn[i].setForeground(color[i]);
			btn[i].addActionListener(this);
			
			panel5.add(btn[i]);
		}
		
		panel4.add(panel1);
		panel4.add(panel2);
		panel4.add(panel3);
		
		add("North", panel5);
		add(panel4);
		
		setSize(300, 200);
		setVisible(true);
	}
	
	public static void main(String[] args) {
		new P_1("Action Event Test~~");
	}
	@Override
	public void actionPerformed(ActionEvent e) 
	{
		//Button obj = (Button)e.getSource();
		
		Object obj = e.getSource();
		
		for (int i = 0; i < 9; i++) 
		{
			if(obj == btn[i])
			{
				panel1.setBackground(color[i]);
				panel2.setBackground(color[(i+1)%9]);
				panel3.setBackground(color[(i+2)%9]);
			}
			System.out.println(e.getActionCommand() + "눌렸습니다.\n");
		}
	}

}

버튼을 누르면 버튼에 해당하는 색, 그 다음에 나올 색들을 출력하게 만들었습니다.
프레임의 기본 레이아웃은 BorderLayout입니다.
패널을 만들어 주고, 한가지 패널에 덧씌워줄 패널들을 만들어줍니다.
그리고 상단에 버튼을 누를 공간도 만들어줍니다.
그 후, 저는 panel4에 나머지 123을 넣어주고, panel5에는 버튼을 넣을 공간을 마련해줍니다.

그 후, setBackgroun로 만들어둔 색을 지정해주고, 나머지 패널들에는
그 다음 색이 올 수 있도록 (color[(i+1)%9]로 지정해줍니다.

profile
꾸준함의 가치를 믿는 개발자

0개의 댓글