Please Enable JavaScript!
Gon[ Enable JavaScript ]

자바(Java) AWT – Button 컨트롤 사용법과 예제

자바(JAVA)
반응형

자바(Java) AWT – Button 컨트롤 사용법과 예제

 

환경 : Eclipse Mars, Android 4.2.2, JDK 1.7

 

버튼 컨트롤은 라벨을 포함하고 있으며, 눌렀을 때 이벤트가 발생합니다. 다시 말하면 마우스로 버튼을 누르거나 놓았을 때 AWT ActionEvent 를 발생시킵니다. 버튼이벤트가 일어나는 구조는 다음과 같습니다. 처음에 버튼이 클릭되면 내부에 processEvent() 함수가 무조건 호출됩니다. 이 함수는 모든 버튼이벤트는 이 함수를 거쳐 갑니다. 이 버튼이벤트는 어떤 버튼이 클릭했는지 구분하여 해당하는 버튼의 processActionEvent() 함수를 호출합니다.

 

processActionEvent() 호출한 이벤트를 받을려면 버튼마다 리스너 객체를 셋팅해야 합니다. addActionListener() 함수를 사용해 등록하시면 됩니다. 

btnOk.addActionListener(new ActionListener() {
	public void actionPerformed(ActionEvent e) {
		statusLabel.setText("Ok Button clicked.");
	}
});

 

ActionListener 객체를 등록하는데 필수 구현함수인 actionPerformed() 등록하시면 됩니다. 최종적으로 이벤트가 오게되면 이 함수의 인수로 ActionEvent 가 넘어오면서 실행 되게 되는 것이죠. 인수로 넘어온 ActionEvent 객체로 어떤 곳에서 이벤트가 발생했는지 알수 있습니다. 마우스인지? 윈도우이벤트 인지 등등..

 

자바(Java) AWT – Button 컨트롤 사용법과 예제

 

이렇게 버튼마다 ActionListener 모두 등록해야 각각의 버튼이 크릭했을 때 따로 이벤트를 받을수 있겠죠. 3개의 버튼에 ActionListener 객체를 추가한 후 Panel add() 함수를 이용해 붙입니다.

 

btnOk.addActionListener(new ActionListener() {
	public void actionPerformed(ActionEvent e) {
		statusLabel.setText("Ok Button clicked.");
	}
});

btnSubmit.addActionListener(new ActionListener() {
	public void actionPerformed(ActionEvent e) {
		statusLabel.setText("Submit Button clicked.");
	}
});

btnCancel.addActionListener(new ActionListener() {
	public void actionPerformed(ActionEvent e) {
		statusLabel.setText("Cancel Button clicked.");
	}
});

 

아래는 버튼 샘플을 구현한 전체 소스 입니다.


import java.awt.Button;
import java.awt.FlowLayout;
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;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class AwtButtonControl {
	private Frame mainFrame;
	private Label headerLabel;
	private Label statusLabel;
	private Panel controlPanel;

	public AwtButtonControl() {
		prepareGUI();
	}

	public static void main(String[] args) {
		AwtButtonControl awtControlDemo = new AwtButtonControl();
		awtControlDemo.showButton();
	}

	private void prepareGUI() {
		// Frame 에 대한 셋팅
		mainFrame = new Frame("Java AWT 샘플");
		mainFrame.setSize(400, 400);
		mainFrame.setLayout(new GridLayout(3, 1));
		mainFrame.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent windowEvent) {
				System.exit(0);
			}
		});

		// 상단에 있는 라벨
		headerLabel = new Label();
		headerLabel.setAlignment(Label.CENTER);
		headerLabel.setText("Control Test : Button");

		// 하단 상태값 라벨
		statusLabel = new Label();
		statusLabel.setText("Status Lable");
		statusLabel.setAlignment(Label.CENTER);
		statusLabel.setSize(350, 100);

		controlPanel = new Panel();
		controlPanel.setLayout(new FlowLayout());

		mainFrame.add(headerLabel);
		mainFrame.add(controlPanel);
		mainFrame.add(statusLabel);
		mainFrame.setVisible(true);
	}

	private void showButton() {

		Button btnOk = new Button("OK");
		Button btnSubmit = new Button("Submit");
		Button btnCancel = new Button("Cancel");

		btnOk.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				statusLabel.setText("Ok Button clicked.");
			}
		});

		btnSubmit.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				statusLabel.setText("Submit Button clicked.");
			}
		});

		btnCancel.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				statusLabel.setText("Cancel Button clicked.");
			}
		});

		controlPanel.add(btnOk);
		controlPanel.add(btnSubmit);
		controlPanel.add(btnCancel);

		mainFrame.setVisible(true);

	}
}

 

AWT 를 실행한 화면이며 각 버튼 클릭시 이벤트를 발생시켜 아래 라벨에 값을 변경합니다.

 

자바(Java) AWT – Button 컨트롤 사용법과 예제

 

반응형
Posted by 녹두장군

댓글을 달아 주세요

  1. 꼬마용사 2017.12.12 22:06  댓글주소  수정/삭제  댓글쓰기

    다 똑같은 하나를 붙인 다음에 버튼의 내용 알아와서 switch case 문으로 비교해서 하는 것도 되나요?
    되면 어떻게 하는지 알려주세요!