<실행 화면>
위와 같은 윈도우를 구성하고,
'저장' 버튼을 누르면 자기소개란에 입력 내용을 모두 출력하도록 하기
<코드>
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으로 묶여있기 때문에 선택 해제가 안 된다.
방법이 있기야 할 텐데 아직 모름..
아무튼 차차 수정해 볼게요