자바(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 객체로 어떤 곳에서 이벤트가 발생했는지 알수 있습니다. 마우스인지? 윈도우이벤트 인지 등등..
▼ 이렇게 버튼마다 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)' 카테고리의 다른 글
자바(Java) 숫자 나누기로 소수점 이하 출력하기 (0) | 2023.08.22 |
---|---|
자바(Java) 문자열 구분을 위한 Split 함수 사용하는 방법 (0) | 2022.10.24 |
자바(Java) 데이터 형변환 char -> String 여러가지 방법 (5) | 2022.07.22 |
자바(Java) 자료구조 클래스 LinkedList 구현하는 방법 (0) | 2020.06.27 |
자바(Java) AWT – CheckboxGroup 이용해서 옵션기능구현 (0) | 2020.05.24 |
JSP Servlet 구현하기, POST 로 값 전송하기 (0) | 2019.11.16 |
자바(Java) static 문법에 대해서 알아 봅니다. (0) | 2019.11.02 |
자바(Java) 두 수에서 최대공약수 찾는 방법, BigInteger (0) | 2019.10.23 |
녹두장군1님의
글이 좋았다면 응원을 보내주세요!