본문 바로가기
JAVA

[Java] 배치관리자 윈도우 구성

by KAYEON 2021. 11. 29.

<실행 화면>

위와 같은 윈도우를 구성하고,

'저장' 버튼을 누르면 자기소개란에 입력 내용을 모두 출력하도록 하기

 

 

<코드>

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class RegMember2 {
	
	private JFrame frame;
	private JPanel p1, p2, p3;
	private JPanel part1, part2, part3, part4, part5, part6, part7;
	private JLabel name, sex, num, addr, team, hobby, intr, hipen;
	private JTextField f1, f2, f3, f4, f5;
	private JRadioButton male, female;
	private ButtonGroup g;
	private JCheckBox movie, music, photo, exercise;
	private JTextArea txt;
	private JButton b1, b2;
	
	public RegMember2() {
		frame = new JFrame("사원 등록");
		buildGUI();
		
		frame.setSize(350, 420);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
	}
	
	private void buildGUI() {
		name = new JLabel("성                명");
		sex = new JLabel("성           별");
		num = new JLabel("주민등록번호");
		addr = new JLabel("주                소");
		team = new JLabel("부      서      명");
		hobby = new JLabel("취                미");
		intr = new JLabel("자   기   소   개");
		hipen = new JLabel("-");
		
		f1 = new JTextField(8);
		f2 = new JTextField(6);
		f3 = new JTextField(7);
		f4 = new JTextField(22);
		f5 = new JTextField(8);
		txt = new JTextArea(9,22);
		
		male = new JRadioButton("남");
		female = new JRadioButton("여");
		g = new ButtonGroup();
		g.add(male);
		g.add(female);
		
		movie = new JCheckBox("영화");
		music = new JCheckBox("음악감상");
		photo = new JCheckBox("사진");
		exercise = new JCheckBox("운동");
		
		b1 = new JButton("저장");
		b1.addActionListener(handler);
		b2 = new JButton("종료");
		
		part1 = new JPanel();
		part1.setLayout(new FlowLayout(FlowLayout.LEFT));
		part1.add(name);
		part1.add(f1);
		part1.add(sex);
		part1.add(male);
		part1.add(female);
		
		part2 = new JPanel();
		part2.setLayout(new FlowLayout(FlowLayout.LEFT));
		part2.add(num);
		part2.add(f2);
		part2.add(hipen);
		part2.add(f3);
		
		part3 = new JPanel();
		part3.setLayout(new FlowLayout(FlowLayout.LEFT));
		part3.add(addr);
		part3.add(f4);

		part4 = new JPanel();
		part4.setLayout(new FlowLayout(FlowLayout.LEFT));
		part4.add(team);
		part4.add(f5);

		part5 = new JPanel();
		part5.setLayout(new FlowLayout(FlowLayout.LEFT));
		part5.add(hobby);
		part5.add(movie);
		part5.add(music);
		part5.add(photo);
		part5.add(exercise);

		p1 = new JPanel();
		p1.setLayout(new GridLayout(0, 1));
		p1.add(part1);
		p1.add(part2);
		p1.add(part3);
		p1.add(part4);
		p1.add(part5);
		
		part6 = new JPanel();
		part6.setLayout(new FlowLayout(FlowLayout.LEFT));
		part6.add(intr);
		part7 = new JPanel();
		part7.setLayout(new FlowLayout(FlowLayout.CENTER));
		part7.add(txt);
		
		p2 = new JPanel();
		p2.setLayout(new BorderLayout());
		p2.add(part6, BorderLayout.NORTH);
		p2.add(part7, BorderLayout.CENTER);
		
		p3 = new JPanel();
		p3.setLayout(new FlowLayout(FlowLayout.CENTER));
		p3.add(b1);
		p3.add(b2);
		
		frame.setLayout(new BorderLayout());
		frame.add(p1, BorderLayout.NORTH);
		frame.add(p2, BorderLayout.CENTER);
		frame.add(p3, BorderLayout.SOUTH);
	}
	
	private ActionListener handler = new ActionListener() {
		
		@Override
		public void actionPerformed(ActionEvent e) {
			String name = f1.getText();
			f1.setText("");
			
			String sex = "";
			if(male.isSelected()) {
				sex = "남";
				male.setSelected(false);
			}
			else if(female.isSelected()) {
				sex = "여";
				female.setSelected(false);
			}
			
			String num = f2.getText() + " - " + f3.getText();
			f2.setText("");
			f3.setText("");
			
			String addr = f4.getText();
			f4.setText("");
			
			String team = f5.getText();
			f5.setText("");
			
			String hobby = "";
			if(movie.isSelected()) {
				movie.setSelected(false);
				hobby += "영화 ";
			}
			if(music.isSelected()) {
				music.setSelected(false);
				hobby += "음악감상 ";	
			}
			if(photo.isSelected()) {
				photo.setSelected(false);
				hobby += "사진 ";
			}
			if(exercise.isSelected()) {
				exercise.setSelected(false);
				hobby += "운동 ";
			}
			
			txt.append("이름: " + name + "\n");
			txt.append("성별: " + sex + "\n");
			txt.append("주민등록번호: " + num + "\n");
			txt.append("주소: " + addr + "\n");
			txt.append("부서명: " + team + "\n");
			txt.append("취미: " + hobby + "\n");
		}
	};
	
	public static void main(String[] args) {
		new RegMember2();
	}

}

코드 수정해야지.. 문제가 많아 보임

Lable 문자 같은 경우에는 폭을 일일이 space로 맞추어야 한다.

입력 내용을 자기소개 textarea에 출력 후 setText 함수로 초기화해 준다.

다만 라디오 버튼의 경우, ButtonGroup으로 묶여있기 때문에 선택 해제가 안 된다.

방법이 있기야 할 텐데 아직 모름..

아무튼 차차 수정해 볼게요