2013년 7월 4일 목요일

(130704) 9일차 Join.java (JoinForm.java에 AWT Event 적용 - 새 창 띄워서 회원정보 붙이기)

 - 소스
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class Join extends JFrame implements ActionListener {

JLabel label [] = new JLabel [11]; // Label 배열로 선언
JTextField textfield[] = new JTextField [5]; // TextField 배열로 선언
JTextArea textarea = new JTextArea(); // TextArea 선언
JScrollPane sp; // TextArea의 스크롤바를 위한 ScrollPane 선언

JRadioButton male, female; // RadioButton 선언
JCheckBox travel, sleep; // CheckBox 선언
ButtonGroup bg; // RadioButton의 그룹핑을 위한 ButtonGroup 선언
JButton trans, cancel; // Button 선언
JComboBox<String> jcb; // ComboBox 선언
String phone [] = {"010", "011", "016", "017", "018", "019", "070"}; // ComboBox를 위한 배열 선언

JPanel panel1, panel2, panel3, panel4, panel5, panel6;
JPanel panel11, panel12, panel21, panel22, panel31, panel32, panel41, panel42;

public Join() {

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

GridLayout frameLayout = new GridLayout(6, 1); // 전체적인 큰 틀을 GridLayout으로 설정
frameLayout.setVgap(3); // GridLayout간의 간격 설정
this.setLayout(frameLayout); // 설정한 Layout을 set

label[0] = new JLabel("아이디"); 
label[1] = new JLabel("비밀번호");
label[2] = new JLabel("이름");
label[3] = new JLabel("성별");
label[4] = new JLabel("취미");
label[5] = new JLabel("H.P");
label[6] = new JLabel("자기소개");
label[7] = new JLabel("*8자이내");
label[8] = new JLabel("*필수입력");
label[9] = new JLabel("-");
label[10] = new JLabel("-");

textfield[0] = new JTextField(8); // 아이디
textfield[1] = new JTextField(8); // 비밀번호
textfield[2] = new JTextField(8); // 이름
textfield[3] = new JTextField(3); // H.P
textfield[4] = new JTextField(3); // H.P
textarea = new JTextArea(1, 1); // 자기소개

male = new JRadioButton("남성");
female = new JRadioButton("여성");

bg = new ButtonGroup();
bg.add(male);
bg.add(female);

travel = new JCheckBox("여행");
sleep = new JCheckBox("잠자기");

jcb = new JComboBox<String>(phone);

trans = new JButton("전송");
cancel = new JButton("취소");

panel1 = new JPanel();
panel2 = new JPanel();
panel3 = new JPanel();
panel4 = new JPanel();
panel5 = new JPanel();
panel6 = new JPanel();

panel11 = new JPanel();
panel12 = new JPanel();
panel21 = new JPanel();
panel22 = new JPanel();
panel31 = new JPanel();
panel32 = new JPanel();
panel41 = new JPanel();
panel42 = new JPanel();

BorderLayout layout1 = new BorderLayout();
BorderLayout layout2 = new BorderLayout();
BorderLayout layout3 = new BorderLayout();
BorderLayout layout4 = new BorderLayout();
BorderLayout layout5 = new BorderLayout();
panel1.setLayout(layout1);
panel2.setLayout(layout2);
panel3.setLayout(layout3);
panel4.setLayout(layout4);
panel5.setLayout(layout5);

panel11.add(label[0]); // 이름
panel11.add(textfield[0]); // 이름
panel12.add(label[7]); // *8자이내
panel1.add("West", panel11); // BorderLayout의 왼쪽
panel1.add("East", panel12); // BorderLayout의 오른쪽

panel21.add(label[1]); // 비밀번호
panel21.add(textfield[1]); // 비밀번호
panel22.add(label[2]); // 성명
panel22.add(textfield[2]); // 성명
panel2.add("West", panel21); // BorderLayout의 왼쪽
panel2.add("East", panel22); // BorderLayout의 오른쪽

panel31.add(label[3]); // 성별
panel31.add(male); // 성별 남성
panel31.add(female); // 성별 여성
panel32.add(label[4]); // 취미
panel32.add(travel); // 취미 여행
panel32.add(sleep); // 취미 잠자기
panel3.add("West", panel31); // BorderLayout의 왼쪽
panel3.add("East", panel32); // BorderLayout의 오른쪽

panel41.add(label[5]); // H.P
panel41.add(jcb); // ComboBox
panel41.add(label[9]); // -
panel41.add(textfield[3]); // H.P
panel41.add(label[10]); // -
panel41.add(textfield[4]); // H.P
panel42.add(label[8]); // *필수입력
panel4.add("West", panel41); // BorderLayout의 왼쪽
panel4.add("East", panel42); // BorderLayout의 오른쪽

panel5.add("West", label[6]); // 자기소개
sp = new JScrollPane(textarea); // TextArea에 ScrollPane을 적용
sp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
sp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
panel5.add(sp); // TextArea에 적용된 ScrollPane을 붙임

panel6.add(trans); // 전송
panel6.add(cancel); // 취소

this.add(panel1);
this.add(panel2);
this.add(panel3);
this.add(panel4);
this.add(panel5);
this.add(panel6);

// 버튼에 이벤트를 부착
// implements ActionListener - 내 클래스에서 받았으므로 this
trans.addActionListener(this);
cancel.addActionListener(this);

setTitle("회원가입 폼!!");
setSize(400, 350);
setVisible(true);
}

public static void main(String[] args) {
new Join();
}

@Override // interface를 구현하였으므로 ActionListener의 actionPerformed 오버라이딩 필요
public void actionPerformed(ActionEvent e){
String data = e.getActionCommand(); // 버튼의 라벨값을 리턴

Join2 join;

if(data.equals("전송")){
String str1 = null;
String str2 = null;
String str3 = null;
if(male.isSelected()) // 성별
str1 = male.getText();
else
str1 = female.getText();

if(travel.isSelected()) // 취미
str2 = travel.getText();
if(sleep.isSelected())
str2 = sleep.getText();

str3 = jcb.getSelectedItem()+"-"+textfield[3].getText()+"-"+textfield[4].getText(); // 전화번호

// Join2 클래스에 회원정보 전체를 넘겨줌
join = new Join2(textfield[0].getText(), textfield[1].getText(), textfield[2].getText(), str1, str2, str3, textarea.getText());
}

if(data.equals("취소")){
textfield[0].setText("");
textfield[1].setText("");
textfield[2].setText("");
male.setSelected(true);
travel.setSelected(false);
sleep.setSelected(false);
textfield[3].setText("");
textfield[4].setText("");
textarea.setText("");
}
}
}

class Join2 extends JDialog{
JLabel label1 = new JLabel("");
JLabel label2 = new JLabel("");
JLabel label3 = new JLabel("");
JLabel label4 = new JLabel("");
JLabel label5 = new JLabel("");
JLabel label6 = new JLabel("");
JLabel label7 = new JLabel("");

// Join 클래스에서 받아온 회원 정보를 새로운 프레임에 Label 형식으로 붙임
public Join2 (String str1, String str2, String str3, String str4, String str5, String str6, String str7){
label1.setText(" 아이디 : " + str1.toString());
label2.setText(" 비밀번호 : " + str2.toString());
label3.setText(" 이름 : " + str3.toString());
label4.setText(" 성별 : " + str4.toString());
label5.setText(" 취미 : " + str5.toString());
label6.setText(" H.P : " + str6.toString());
label7.setText(" 자기소개 : " + str7.toString());

JPanel panel = new JPanel();
panel.setLayout(new GridLayout(7, 1));
panel.add(label1);
panel.add(label2);
panel.add(label3);
panel.add(label4);
panel.add(label5);
panel.add(label6);
panel.add(label7);
this.add(panel);

this.setTitle("회원정보");
this.setSize(400,350);
this.setModal(true);
this.setVisible(true);
}
}


 - 결과