Notice
Recent Posts
Recent Comments
Link
투케이2K
191. (java/자바) GUI (awt/swing) - for문 사용해 동적으로 레이아웃 JButton 버튼 생성 및 ActionListener 클릭 이벤트 정의 본문
Java
191. (java/자바) GUI (awt/swing) - for문 사용해 동적으로 레이아웃 JButton 버튼 생성 및 ActionListener 클릭 이벤트 정의
투케이2K 2021. 4. 6. 08:43/* =========================== */
[ 개발 환경 설정 ]
개발 툴 : Eclipse
개발 언어 : Java
/* =========================== */
/* =========================== */
[소스 코드]
package ex5;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Arrays;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
//TODO 액티비티에 ActionListener 클릭 이벤트 상속 받음
public class MainActivity13 extends JFrame implements ActionListener{
//TODO 전역 변수 선언 실시
static String[] arr = {"0","1","2","3","4","5","6","7","8","9","10","11"};
static JButton[] btn = new JButton[12];
static JLabel txt;
static MainActivity13 mainActivity;
//TODO 메인 메소드 시작 부분
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("[GUI - for문 사용해 동적으로 레이아웃 JButton 버튼 생성 및 ActionListener 클릭 이벤트 정의]");
/*[설 명]
* 1. 자바에서는 JFrame을 사용해서 GUI 프로그램을 만들 수 있습니다
* 2. new GridLayout(행, 열, 가로여백, 세로여백) 표시 - 테이블 모양 형식
* 3. ActionListener : 클릭 이벤트 정의 실시
* 4. for문 : 동적으로 배열에 포함된 값을 사용해 버튼을 생성합니다
* */
//TODO 클릭 이벤트를 정의하기 위해 액티비티 객체 생성
mainActivity = new MainActivity13();
//TODO 부모 프레임 생성
JFrame frm = new JFrame("동적으로 레이아웃 생성");
//TODO 부모 프레임 크기 설정 (가로, 세로)
frm.setSize(500, 500);
//TODO 부모 프레임을 화면 가운데에 배치
frm.setLocationRelativeTo(null);
//TODO 부모 프레임을 닫았을 때 메모리에서 제거되도록 설정
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//TODO 부모 레이아웃 설정
frm.getContentPane().setLayout(null);
//TODO 자식 레이아웃 [텍스트] 생성
txt = new JLabel("");
txt.setBounds(0, 0, 500, 100); //setBounds(가로위치, 세로위치, 가로길이, 세로길이);
txt.setFont(new Font("맑은 고딕", 0, 20)); //TODO 폰트 정의
txt.setHorizontalAlignment(JLabel.CENTER); //TODO 텍스트 센터 표시 설정
//TODO 자식 레이아웃 [버튼] 생성
JPanel grid_panel = new JPanel();
grid_panel.setLayout(new GridLayout(4, 4, 0, 0)); //테이블 형식 - 행, 열, 가로 여백, 세로 여백
for(int idx=0; idx<arr.length; idx++) {
btn[idx] = new JButton(arr[idx]);
btn[idx].setFont(new Font("맑은 고딕", 0, 20)); //TODO 폰트 정의
btn[idx].setBackground(Color.GRAY); //TODO 백그라운드 색상 정의
btn[idx].setForeground(Color.WHITE); //TODO 텍스트 색상 정의
btn[idx].addActionListener(mainActivity); //TODO 클릭 이벤트 추가
grid_panel.add(btn[idx]); //TODO JPanel에 버튼 추가
}
grid_panel.setBounds(0, 100, 500, 350); //setBounds(가로위치, 세로위치, 가로길이, 세로길이);
//TODO 부모 프레임에다가 자식 컴포넌트 추가
frm.getContentPane().add(txt);
frm.getContentPane().add(grid_panel);
//TODO 부모 프레임이 보이도록 설정
frm.setVisible(true);
}//메인 종료
//TODO 버튼 클릭 이벤트 수행 부분
@Override
public void actionPerformed(ActionEvent e) {
//TODO Auto-generated method stub
//TODO 컴포넌트에 정의된 text 받아오는역할
switch(e.getActionCommand()){
//TODO getActionCommand() 버튼의 텍스트를 얻어옵니다
case "0":
txt.setText("0");
break;
case "1":
txt.setText("1");
break;
case "2":
txt.setText("2");
break;
case "3":
txt.setText("3");
break;
case "4":
txt.setText("4");
break;
case "5":
txt.setText("5");
break;
case "6":
txt.setText("6");
break;
case "7":
txt.setText("7");
break;
case "8":
txt.setText("8");
break;
case "9":
txt.setText("9");
break;
case "10":
txt.setText("10");
break;
case "11":
txt.setText("11");
break;
default :
txt.setText("NO");
break;
}
}
}//클래스 종료
/* =========================== */
[결과 출력]
/* =========================== */
/* =========================== */
[요약 설명]
* 1. 자바에서는 JFrame을 사용해서 GUI 프로그램을 만들 수 있습니다
* 2. new GridLayout(행, 열, 가로여백, 세로여백) 표시 - 테이블 모양 형식
* 3. ActionListener : 클릭 이벤트 정의 실시
* 4. for문 : 동적으로 배열에 포함된 값을 사용해 버튼을 생성합니다
/* =========================== */
반응형
'Java' 카테고리의 다른 글
Comments