본문 바로가기

JAVA /Swing

[ 실무 기본 예제 ] 스윙 1편 . 사용자 관리 프로그램

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
import java.util.*;
import java.io.*;


class Exam03_sub1 implements Serializable{ // 사용자 정보 저장 및 수정용 클래스,
 private String name;
 private String jumin;
 private String tel;
 private String addr;
 
 public Exam03_sub1(String name , String j , String t, String a){
  this.name = name;
  jumin = j;
  tel = t;
  addr = a;
 }
 
 public void setName(String a){ name = a; }
 public String getName(){ return name; }
 public void setJumin(String b){ jumin = b; }
 public String getJumin(){ return jumin; }
 public void setTel(String a){ tel = a; }
 public String getTel(){ return tel; }
 public void setAddr(String a){ addr = a; }
 public String getAddr(){ return addr; }
 
}
class Exam03_sub extends JFrame 
implements ActionListener,KeyListener,FocusListener{
 private Container con;
 private JLabel jlb = new JLabel("<< 전체 보기 ");
 private JButton jbt = new JButton("전체보기");
 private JTextArea jta = new JTextArea(15,40);
 private JScrollPane jsp = new JScrollPane(jta);
 private JButton jbt1 = new JButton("등록");
 private JButton jbt2 = new JButton("수정");
 private JButton jbt3 = new JButton("삭제");
 private JButton jbt4 = new JButton("Clear");
 private JButton jbt5 = new JButton("저장");
 private JButton jbt6 = new JButton("로드");
 private JButton jbt7 = new JButton("종료");
 
 private JLabel lb = new JLabel("이름 :" , JLabel.RIGHT);
 private JLabel lb1 = new JLabel("주민번호 :" , JLabel.RIGHT);
 private JLabel lb2 = new JLabel("전화번호  : " , JLabel.RIGHT);
 private JLabel lb3 = new JLabel("주소 :" , JLabel.RIGHT);
 
 
 private JLabel alb = new JLabel("검색",JLabel.RIGHT);
 private JTextField atf = new JTextField(7);
 private JTextField atf1 = new JTextField(7);
 private JButton abt = new JButton("검색");
 private JTextArea ata = new JTextArea(5,20);
 private JScrollPane ajsp = new JScrollPane(ata);
 private JButton abt1 = new JButton("<<");
 private JButton abt2 = new JButton(">>");
 private ImageIcon im = new ImageIcon("abc.jpg");
 
 //필드들
 private JTextField tf = new JTextField(14);
 private JTextField tf1 = new JTextField(7);
 private JTextField tf2 = new JTextField(7);
 private JTextField tf3 = new JTextField(14);
 private JTextField tf4 = new JTextField(14);
 private Vector vc = new Vector(); // 사용자 데이터 저장 공간
 private int pos = 0; // 검색된 데이터의 위치번째를 기억하는 변수
 private int pos1 = 0 ; // 수정될 데이터의 위치번째 임시 기억 변수
 
 //삭제부분
 private JFileChooser jfc = new JFileChooser("C://"); // 파일 선택창 생성
 private JDialog jdlg = new JDialog(this,"삭제",true); // 삭제용 다이얼로그
 private Container condlg;  // 다이얼로그 컨테이너 생성 
 private JLabel lbdlg = new JLabel("이름 : " , JLabel.RIGHT);
 private JLabel lbdlg1 = new JLabel("주민번호 : " , JLabel.RIGHT);
 private JTextField tfdlg = new JTextField(15);
 private JTextField tfdlg1 = new JTextField(7);
 private JTextField tfdlg2 = new JTextField(7);
 private JButton btdlg = new JButton("삭제 ");
 private JButton btdlg1 = new JButton("취소");
 
 //수정 다이얼로그
 private JFileChooser ajfc = new JFileChooser("C://"); // 파일 선택창 생성
 private JDialog ajdlg = new JDialog(this,"수정",true); // 수정용 다이얼로그
 private Container acondlg;  // 다이얼로그 컨테이너 생성 
 private JLabel albdlg = new JLabel("이름 : " , JLabel.RIGHT);
 private JLabel albdlg1 = new JLabel("주민번호 : " , JLabel.RIGHT);
 private JTextField atfdlg = new JTextField(15);
 private JTextField atfdlg1 = new JTextField(7);
 private JTextField atfdlg2 = new JTextField(7);
 private JButton abtdlg = new JButton("수정 ");
 private JButton abtdlg1 = new JButton("취소");
 
 // 수정 서브 인터페이스  다이얼로그
 private JDialog bjdlg = new JDialog(this,"수정", true);
 private Container bcondlg;
 private JLabel blbdlg = new JLabel("이름 : " ,JLabel.RIGHT);
 private JLabel blbdlg1 = new JLabel("주민번호 : " , JLabel.RIGHT);
 private JLabel blbdlg2 = new JLabel("전화번호 : " , JLabel.RIGHT);
 private JLabel blbdlg3 = new JLabel("주소 : " , JLabel.RIGHT);
 private JLabel btfdlg = new JLabel();
 private JLabel btfdlg1 = new JLabel();
 private JTextField btfdlg2 = new JTextField(15);
 private JTextField btfdlg3 = new JTextField(15);
 private JButton bbtdlg = new JButton("수정");
 private JButton bbtdlg1 = new JButton("취소");
 
 
 public Exam03_sub(String str){
  super(str);
  this.init();
  this.setIconImage(im.getImage()); // 아이콘 이미지
  this.setResizable(false); // 크기 변화 사용 여부
  this.start();
  this.setSize(750,350);
  Toolkit tk = Toolkit.getDefaultToolkit();
  Dimension di = tk.getScreenSize();
  Dimension di1 = this.getSize();
  // 폼 위치 중앙에 위치
  this.setLocation((int)(di.getHeight() / 2 - di1.getHeight() / 2),(int)(di.getWidth() / 2 - di1.getWidth() / 2));
  
  this.setVisible(true);
 }
 public void init(){
  con = this.getContentPane();
  con.setLayout(new BorderLayout(5,5));
     JPanel jp = new JPanel(new BorderLayout(3 ,3)); // 전체 레이아웃
  JPanel jp1 = new JPanel(new FlowLayout(FlowLayout.LEFT));
  jp1.add(jbt);
  jp1.add(jlb);
  jp.add("North",jp1); // 상단부 버튼과 라벨
  jp.add("Center",jsp); //중앙부 텍스트 지역
  JPanel jp2 = new JPanel(new GridLayout(1,7,3,3)); //버튼 담을 패널
  jp2.add(jbt1);
  jp2.add(jbt2);
  jp2.add(jbt3);
  jp2.add(jbt4);
  jp2.add(jbt5);
  jp2.add(jbt6);
  jp2.add(jbt7);
  jbt.setEnabled(false);
  jbt1.setEnabled(false);
  jbt2.setEnabled(false);
  jbt3.setEnabled(false);
  jbt4.setEnabled(false);
  jbt5.setEnabled(false);
  jp.setBorder(new TitledBorder(new SoftBevelBorder(SoftBevelBorder.RAISED),"개인 정보 확인"));
  jp.add("South",jp2); // 기본패널 하단부에 버튼 7개 추가 
  con.add(jp); // 기본 패널 추가
  JPanel jp3 = new JPanel(new GridLayout(2,1,3,3));
  JPanel jp4 = new JPanel(new BorderLayout());
  JPanel jp5 = new JPanel(new GridLayout(4,1));
  // 왼쪽에 달아놓을 라벨들을 jp5 에 담고, jp4의 왼쪽에 추가
  jp5.add(lb);
  jp5.add(lb1);
  jp5.add(lb2);
  jp5.add(lb3);
  jp4.add("West",jp5);
  //라벨에 맞는 텍스트 필드 각각 패널에 담아서 추가
  JPanel jp6 = new JPanel(new GridLayout(4,1));
  //이름 필드
  jp6.add(tf);
  //주민번호는 필드가 2개라, 패널로 묶어서 추가
  JPanel jp7 = new JPanel(new GridLayout(1,2,5,5));
  jp7.add(tf1);
  jp7.add(tf2);
  jp6.add(jp7); //주번 필드
  
  jp6.add(tf3);//전화번호
  jp6.add(tf4);//주소필드

  // 모두 담긴 내용들 jp4 패널에, 추가
  
  jp4.add("Center",jp6);
  // 타이틀 보더
  jp4.setBorder(new TitledBorder(new SoftBevelBorder(SoftBevelBorder.RAISED),"개인정보"));
  jp3.add(jp4);  //상단부
  
  //하단부
  JPanel jp8 = new JPanel(new BorderLayout());
  JPanel jp9 = new JPanel(new BorderLayout());
  jp9.add("West",alb);
  JPanel jp10 = new JPanel(new GridLayout(1,2,4,5));
  jp10.add(atf);
  jp10.add(atf1);
  jp9.add("Center",jp10);
  jp9.add("East",abt);
  JPanel jp11 = new JPanel(new FlowLayout());
  jp11.add(abt1);
  jp11.add(abt2);
  jp8.add("North",jp9);
  jp8.add("Center",ajsp);
  jp8.add("South",jp11);
  abt.setBorder(new BevelBorder(BevelBorder.RAISED));
  abt1.setBorder(new BevelBorder(BevelBorder.RAISED));
  abt2.setBorder(new BevelBorder(BevelBorder.RAISED));
  abt.setEnabled(false);
  abt1.setEnabled(false);
  abt2.setEnabled(false);
  jp8.setBorder(new TitledBorder(new SoftBevelBorder(SoftBevelBorder.RAISED),"정보검색"));
  jp3.add(jp8);  //하단부
  
  con.add("West",jp3);
  jta.setEditable(false); // 텍스트 아레아 수정 금지
  ata.setEditable(false); // 검색 텍스트 아레아 수정 금지
  jta.setDisabledTextColor(Color.black); // 화면 잘 보이게 색상 지정
  ata.setDisabledTextColor(Color.black); 
  
  
  //삭제 다이얼로그 구성
  condlg = jdlg.getContentPane();
  condlg.setLayout(new BorderLayout());
  JPanel jpdlg = new JPanel(new GridLayout(2,1));
  jpdlg.add(lbdlg);
  jpdlg.add(lbdlg1);
  condlg.add("West",jpdlg);
  JPanel jpdlg1 = new JPanel(new GridLayout(2,1));
  JPanel jpdlg1_1 = new JPanel(new FlowLayout(FlowLayout.RIGHT));
  jpdlg1.add(tfdlg);
  jpdlg1_1.add(tfdlg1);
  jpdlg1_1.add(tfdlg2);
  jpdlg1.add(jpdlg1_1);
  condlg.add("Center",jpdlg1);
  JPanel jpdlg2 = new JPanel(new FlowLayout(FlowLayout.RIGHT));
  jpdlg2.add(btdlg);
  jpdlg2.add(btdlg1);

  condlg.add("South",jpdlg2);
  jdlg.pack();
  jdlg.setResizable(false); // 크기 변환 여부 선택
  
  Toolkit tk = Toolkit.getDefaultToolkit();
  Dimension di = tk.getScreenSize();
  Dimension di1 = jdlg.getSize();
  
  jdlg.setLocation((int)(di.getWidth() / 2 - di1.getWidth() ) , (int)(di.getHeight() / 2 - di1.getHeight() / 2));
  
  
  // 삭제 다이얼로그 구성 끝
  
  
  //수정  다이얼로그 구성
    acondlg = ajdlg.getContentPane();
    acondlg.setLayout(new BorderLayout());
    JPanel ajpdlg = new JPanel(new GridLayout(2,1));
    ajpdlg.add(albdlg);
    ajpdlg.add(albdlg1);
    acondlg.add("West",ajpdlg);
    JPanel ajpdlg1 = new JPanel(new GridLayout(2,1));
    JPanel ajpdlg1_1 = new JPanel(new FlowLayout(FlowLayout.RIGHT));
    ajpdlg1.add(atfdlg);
    ajpdlg1_1.add(atfdlg1);
    ajpdlg1_1.add(atfdlg2);
    ajpdlg1.add(ajpdlg1_1);
    acondlg.add("Center",ajpdlg1);
    JPanel ajpdlg2 = new JPanel(new FlowLayout(FlowLayout.RIGHT));
    ajpdlg2.add(abtdlg);
    ajpdlg2.add(abtdlg1);

    acondlg.add("South",ajpdlg2);
    ajdlg.pack();
    ajdlg.setResizable(false); // 크기 변환 여부 선택
    
    Toolkit atk = Toolkit.getDefaultToolkit();
    Dimension adi = atk.getScreenSize();
    Dimension adi1 = ajdlg.getSize();
    
    ajdlg.setLocation((int)(adi.getWidth() / 2 - adi1.getWidth() ) , (int)(adi.getHeight() / 2 - adi1.getHeight() / 2));
    
    
    // 수정 다이얼로그 구성 끝
    
    
    
    // 수정 두번째 다이얼 로그 구성
    bcondlg = bjdlg.getContentPane();
    bcondlg.setLayout(new BorderLayout());
    JPanel bjp = new JPanel(new GridLayout(4,1));
    bjp.add(blbdlg);
    bjp.add(blbdlg1);
    bjp.add(blbdlg2);
    bjp.add(blbdlg3);
    bcondlg.add("West",bjp);
    JPanel bjp1 = new JPanel(new GridLayout(4,1));
    bjp1.add(btfdlg);
    bjp1.add(btfdlg1);
    bjp1.add(btfdlg2);
    bjp1.add(btfdlg3);
    bcondlg.add("Center",bjp1);
    JPanel bjp2 = new JPanel(new FlowLayout(FlowLayout.RIGHT));
    bjp2.add(bbtdlg);
    bjp2.add(bbtdlg1);
    bcondlg.add("South",bjp2);
    
    
    
    bjdlg.pack();
    bjdlg.setResizable(false); // 크기 변환 여부 선택
    
    Toolkit btk = Toolkit.getDefaultToolkit();
    Dimension bdi = btk.getScreenSize();
    Dimension bdi1 = bjdlg.getSize();
    
    bjdlg.setLocation((int)(bdi.getWidth() / 2 - bdi1.getWidth() ) , (int)(bdi.getHeight() / 2 - bdi1.getHeight() / 2));
    
    
    //수정  하부 다이얼 로그 구성 끝
 }
 public void start(){
  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  jbt7.addActionListener(this); //종료 버튼
  tf.addKeyListener(this); // 이름 필드
  tf1.addFocusListener(this); //주민번호 첫번째 필드
  tf2.addFocusListener(this); //
  tf3.addFocusListener(this);//전번
  tf4.addFocusListener(this); //주소
  tf4.addKeyListener(this); // 주소필드에 키 이벤트 추가
  atf.addKeyListener(this);
  atf1.addKeyListener(this);
  atf1.addFocusListener(this);
  jbt1.addActionListener(this);
  jbt4.addActionListener(this);
  jbt.addActionListener(this); // 전체 보기
  abt.addActionListener(this);
  abt1.addActionListener(this);
  abt2.addActionListener(this);
  jbt5.addActionListener(this); //저장버튼
  jbt6.addActionListener(this); // 로드 버튼
  
  jbt3.addActionListener(this); //삭제 버튼
  tfdlg1.addKeyListener(this); // 삭제다이얼로그의 주민 1 필드
  tfdlg2.addKeyListener(this); // 삭제 다이얼로그의 주민 2 필드
  btdlg1.addActionListener(this); // 삭제 다이얼로그의 취소버튼 액션 이벤트
  btdlg.addActionListener(this); // 삭제 다이얼로그의 삭제 버튼 액션 이벤트
  
  // 수정버튼
  jbt2.addActionListener(this); // 수정 버튼 액션 이벤트
  atfdlg1.addKeyListener(this); // 수정 다이얼로그의 주민 1 필드
  atfdlg2.addKeyListener(this); // 수정 다이얼로그의 주민 2 필드
  abtdlg1.addActionListener(this); // 수정 다이얼로그의 취소버튼 액션 이벤트
  abtdlg.addActionListener(this); // 수정 다이얼로그의 수정 버튼 액션 이벤트
  bbtdlg.addActionListener(this); // 수정 다이얼로그 2  버튼 액션 이벤트
  bbtdlg1.addActionListener(this); // 수정 다이얼로그 2 의 취소 버튼 액션 이벤트
 }
 
 public void actionPerformed(ActionEvent e){
  if(e.getSource() == jbt7){
   System.exit(0);
  }
  else if ( e.getSource() == jbt1){
   String str = tf1.getText().trim() + tf2.getText().trim();
   int[] jumin = new int[13];
   for ( int i = 0 ; i < 13 ; i ++){
    jumin[i] = str.charAt(i) -48; // 숫자화
   }
   float hap = 0.0f;
   float temp = 0.0f;
   float temp1 = 0.0f;
   float cre = 2.0f;
   for(int i = 0 ; i < 12 ; i ++){
    if(cre == 10.0f)
     cre=2.0f;
    hap += (jumin[i]*cre);
    cre+= 1.0f;
   }
   temp = 11.0f * (int)(hap / 11.0f) + 11.0f - hap;
   temp1 = temp - 10.0f * (int)(temp / 10.0f);
   if(temp1 != jumin[12]){
    tf1.setText("");
    tf2.setText("");
    jbt1.setEnabled(false);
    tf1.requestFocus();
    return;
   }
   //여기까지 오면 등록의 준비가 다됨
   String a = tf.getText().trim();
   String b = tf1.getText().trim() + tf2.getText().trim();
   String c = tf3.getText().trim();
   String d = tf4.getText().trim();
   Exam03_sub1 ess = new Exam03_sub1(a,b,c,d);
   vc.add(ess);
   jta.setText("저장이 잘 되었습니다. ");
   jta.append("현재 " + vc.size() +  "명의 데이터가 존재 합니다.");
   tf.setText(""); // 저장완료후 각 필드 초기화
   tf1.setText("");
   tf2.setText("");
   tf3.setText("");
   tf4.setText("");
   jbt1.setEnabled(false); // 저장 버튼
   jbt4.setEnabled(false); // 클리어버튼 사용 x
   jbt.setEnabled(true);
   jbt2.setEnabled(true);
   jbt3.setEnabled(true);
   jbt5.setEnabled(true);
   tf.requestFocus();

  }
  else if (e.getSource() == jbt4){
   tf.setText(""); // 저장완료후 각 필드 초기화
   tf1.setText("");
   tf2.setText("");
   tf3.setText("");
   tf4.setText("");
  }
  else if ( e.getSource() == jbt){
   jta.setText("전체 인원의 개인 정보 입니다.\n");
   jta.append(" 이름     |    주민번호      |    전화번호    |    주소  \n");
   jta.append(" - - - - -  - - - - - - - - - - \n");
   for(int i = 0 ; i < vc.size() ; i ++ ){
    Exam03_sub1 imsi = (Exam03_sub1)vc.elementAt(i);
    jta.append(imsi.getName() + " ");
    jta.append(imsi.getJumin() + " ");
    jta.append(imsi.getTel() + " ");
    jta.append(imsi.getAddr() + " \n");
   }
   jta.append("========================");
   jta.append(" 총 " + vc.size() + "명");
  }
  
  else if ( e.getSource() == abt ){
   String str = atf.getText().trim() + atf1.getText().trim();
   int k = -1; // 벡터의 i 번째 저장을 위한 변수
   for(int i = 0 ; i < vc.size(); i ++ ){
    Exam03_sub1 imsi = (Exam03_sub1)vc.elementAt(i);
    if(imsi.getJumin().equals(str)){
     k= i;
    }
   }
   if( k == -1){
    ata.setText(" 검색된 내용이 없습니다 " );
    atf.setText("");
    atf1.setText("");
    abt.setEnabled(false);
    return;
   }
   pos = k;
   view(pos);
   if(vc.size() <= 1 ){
    abt1.setEnabled(false);
    abt2.setEnabled(false);
   }else{
    if(pos == 0){
     abt1.setEnabled(true);
     abt2.setEnabled(false);
    }
    else if(pos == vc.size() - 1 ){// 마지막 위치
      abt1.setEnabled(false);
      abt2.setEnabled(true);
    }
    else{
     abt1.setEnabled(true);
     abt2.setEnabled(true);
    
    }
   }
   atf.setText("");
   atf1.setText("");
   abt.setEnabled(false);
  }
  else if ( e.getSource() == abt2){
   pos --;
   if(pos == 0){
    abt2.setEnabled(false);
   }
   abt1.setEnabled(true);
   view(pos);
  }
  else if ( e.getSource() == abt1){
   pos++;
   if(pos == vc.size() -1){
    abt1.setEnabled(false);
    }
   abt2.setEnabled(true);
   view(pos);
  }
  else if( e.getSource() == jbt5 ){
   jfc.showSaveDialog(this);
   File file = jfc.getSelectedFile(); // 리턴 받은 파일이름 저장
   FileOutputStream fos=null;
   try{
   fos = new FileOutputStream(file);
   BufferedOutputStream bos = new BufferedOutputStream(fos);
   ObjectOutputStream oos = new ObjectOutputStream(bos);
   oos.writeObject(vc);
   oos.close();
   bos.close();
   fos.close();
   }catch(FileNotFoundException ee){
   }catch(IOException ee){}
   // 파일 저장 끝
   jta.setText("저장 완료 ! \n");
   jta.append(file + " 의 이름으로 저장 되었습니다.");
  }
  
  else if ( e.getSource() == jbt6){
   jfc.showOpenDialog(this);
   File file = jfc.getSelectedFile();
   try{
   FileInputStream fi = new FileInputStream(file);
   BufferedInputStream bi = new BufferedInputStream(fi);
   ObjectInputStream ois = new ObjectInputStream(bi);
   vc.clear();
   vc = (Vector)ois.readObject();
   ois.close();
   bi.close();
   fi.close();
   }catch(FileNotFoundException ee){
   }catch(IOException ee){
   }catch(ClassNotFoundException ee){}
   jta.setText(" 파일 읽기 완료 \n ");
   jta.append(file + " 의 파일로 부터 로드 하였습니다.");
   jta.append(" 총 데이터 개수 : " + vc.size() + "개");
   if(vc.size() >= 1){
   jbt.setEnabled(true);
   jbt2.setEnabled(true);
   jbt3.setEnabled(true);
   jbt5.setEnabled(true);
   
   }
  }
  else if ( e.getSource() == jbt3){
   // 다이얼 로그 띄우기
   jdlg.setVisible(true);
   
  }
  else if( e.getSource() == btdlg1){
   tfdlg.setText("");
   tfdlg1.setText("");
   tfdlg2.setText("");
   jdlg.setVisible(false);
  }
  else if ( e.getSource() == btdlg){
   String name = tfdlg.getText().trim();
   String str1 = tfdlg1.getText().trim() + tfdlg2.getText().trim();
   int kk = -1;
   for(int i = 0 ; i < vc.size() ; i ++){
    Exam03_sub1 imsi = (Exam03_sub1)vc.elementAt(i);
    if(imsi.getName().equals(name) && imsi.getJumin().equals(str1)){
     kk = i;
    }
   }
   if(kk == -1){ // 해당 사용자 없을 시
    jta.setText(" 사용자 존재 하지 않습니다. \n " );
    jta.append("정보 : "+ name + " 이름의 " + str1.substring(0,6) + "-" + str1.substring(6,13)+"\n");
    jta.append("다시 확인 하세요 !! \n");
    tfdlg.setText("");
    tfdlg1.setText("");
    tfdlg2.setText("");
    jdlg.setVisible(false);
    return;
   }
   tfdlg.setText("");
   tfdlg1.setText("");
   tfdlg2.setText("");
   jdlg.setVisible(false);
   vc.removeElementAt(kk); // 실제 데이터 삭제 부분
   jta.setText(" 다음의 사용자를 데이터 저장소에서 삭제 하였습니다.\n");
   jta.append("현재 남은 데이터 개수 : " + vc.size() + "개 ");
  }
  else if(e.getSource() == jbt2){
   // 수정 다이얼로그...
   ajdlg.setVisible(true);
  }
  else if( e.getSource() == abtdlg1){
   atfdlg.setText("");
   atfdlg1.setText("");
   atfdlg2.setText("");
   ajdlg.setVisible(false);
  }
  else if ( e.getSource() == abtdlg){
   String name = atfdlg.getText().trim();
   String str1 = atfdlg1.getText().trim() + atfdlg2.getText().trim();
   int kk = -1;
   for(int i = 0 ; i < vc.size() ; i ++){
    Exam03_sub1 imsi = (Exam03_sub1)vc.elementAt(i);
    if(imsi.getName().equals(name) && imsi.getJumin().equals(str1)){
     kk = i;
    }
   }
   if(kk == -1){ // 해당 사용자 없을 시
    jta.setText(" 사용자 존재 하지 않습니다. \n " );
    jta.append("정보 : "+ name + " 이름의 " + str1.substring(0,6) + "-" + str1.substring(6)+"\n");
    jta.append("다시 확인 하세요 !! \n");
    atfdlg.setText("");
    atfdlg1.setText("");
    atfdlg2.setText("");
    ajdlg.setVisible(false);
    return;
   }
   atfdlg.setText("");
   atfdlg1.setText("");
   atfdlg2.setText("");
   jdlg.setVisible(false);
   // 수정 할 수 있는 다이얼 로그 띄우기
   pos1 = kk; // 해당 사용자 임시 기억
   jta.setText("해당 사용자를 찾았습니다. 수정 하세요.");
   Exam03_sub1 imsi = (Exam03_sub1) vc.elementAt(kk);
   btfdlg.setText(imsi.getName());
   btfdlg1.setText(imsi.getJumin().substring(0,6)+ "-" + imsi.getJumin().substring(6));
   btfdlg2.setText(imsi.getTel());
   btfdlg3.setText(imsi.getAddr());
   bjdlg.setVisible(true);
  }
  
  else if(e.getSource() == bbtdlg){ // 수정 버튼
   Exam03_sub1 imsi = (Exam03_sub1) vc.elementAt(pos1);
   if(btfdlg2.getText().trim().length() !=0 && btfdlg3.getText().trim().length() !=0){
   imsi.setTel(btfdlg2.getText().trim());
   imsi.setAddr(btfdlg3.getText().trim());
   }
   jta.setText(imsi.getName() + "님의 정보가 정상 수정 되었습니다.");
   bjdlg.setVisible(false);
   
  }
  else if ( e.getSource() == bbtdlg1){ // 취소 버튼
   bjdlg.setVisible(false);
  }
 }
 
 

 public void keyTyped(KeyEvent e){
  
 }
 public void keyPressed(KeyEvent e){
  if(e.getSource() == atf){
   if(atf.getText().trim().length() == 6){
    atf1.requestFocus();
    return;
   }
  }else if(e.getSource() == atf1){
   if(atf1.getText().trim().length() == 7){
    abt.setEnabled(true);
    abt.requestFocus();
    return;
   }
  }
  
  // 다이얼로그 삭제 에서의 주민번호
  if(e.getSource() == tfdlg1){
   if(tfdlg1.getText().trim().length() == 6){
    tfdlg2.requestFocus();
    return;
   }
  }else if(e.getSource() == tfdlg2){
   if(tfdlg2.getText().trim().length() == 7){
    btdlg.setEnabled(true);
    btdlg.requestFocus();
    return;
   }
  }
  // 다이얼로그 수정  에서의 주민번호
   if(e.getSource() == atfdlg1){
    if(atfdlg1.getText().trim().length() == 6){
     atfdlg2.requestFocus();
     return;
     }
   }else if(e.getSource() == atfdlg2){
    if(atfdlg2.getText().trim().length() == 7){
     abtdlg.setEnabled(true);
     abtdlg.requestFocus();
     return;
    }
   }
 }
 public void keyReleased(KeyEvent e){
  // 눌럿다 땠다
   // 개인정보 입력시, clear 버튼 활성화
   if(e.getSource() == tf ){
    String str = tf.getText().trim();
    if(str.length() != 0){
     jbt4.setEnabled(true);
    }else{
     jbt1.setEnabled(false);
     if(tf1.getText().trim().length() !=0 || tf2.getText().trim().length() !=0 || tf3.getText().trim().length() !=0 || tf4.getText().trim().length() !=0){
      return;
     }
     jbt4.setEnabled(false);
     
    }
   }
   
   else if(e.getSource() == tf4 ){
    String str = tf4.getText().trim();
    if(str.length() != 0){
     jbt1.setEnabled(true);
    }else{
     jbt1.setEnabled(false);
    }
   }
   
   else if(e.getSource() == atf){
    if(atf.getText().trim().length() == 6){
     atf1.requestFocus();
     return;
    }
   }else if(e.getSource() == atf1){
    if(atf1.getText().trim().length() == 7){
     abt.setEnabled(true);
     abt.requestFocus();
     return;
    }
   }
   
   // 다이얼로그 삭제 에서의 주민번호
   if(e.getSource() == tfdlg1){
    if(tfdlg1.getText().trim().length() == 6){
     tfdlg2.requestFocus();
     return;
    }
   }else if(e.getSource() == tfdlg2){
    if(tfdlg2.getText().trim().length() == 7){
     btdlg.setEnabled(true);
     btdlg.requestFocus();
     return;
    }
   }
   
   // 다이얼로그 수정  에서의 주민번호
   if(e.getSource() == atfdlg1){
    if(atfdlg1.getText().trim().length() == 6){
     atfdlg2.requestFocus();
     return;
     }
   }else if(e.getSource() == atfdlg2){
    if(atfdlg2.getText().trim().length() == 7){
     abtdlg.setEnabled(true);
     abtdlg.requestFocus();
     return;
    }
   }
   
 }
 
 
 
 
 public void focusGained(FocusEvent e){
  if(e.getSource() == tf1){
   String str = tf.getText().trim();
   if(str.length() == 0){
    tf.setText("");
    tf.requestFocus();
    return;
   }
  }
  else if (e.getSource() == tf2){
   String str = tf1.getText().trim();
   if(str.length() !=6){
    tf1.setText("");
    tf1.requestFocus();
    return;
   }
   // 주번필드에 문자 삽입 안되게 설정
   try{
    int i = Integer.parseInt(str);
   }catch(NumberFormatException ee){
    tf1.setText("");
    tf1.requestFocus();
    return;
   }
  }
  
  else if(e.getSource() == tf3){
   String str = tf2.getText().trim();
   if(str.length() !=7){
    tf2.setText("");
    tf2.requestFocus();
    return;
   }
   // 주번필드에 문자 삽입 안되게 설정
   try{
   int i = Integer.parseInt(str);
   }catch(NumberFormatException ee){
    tf2.setText("");
    tf2.requestFocus();
    return;
   }
  }
  
  else if(e.getSource() == tf4){
   String str = tf3.getText().trim();
   if(str.length() == 0){
    tf3.setText("");
    tf3.requestFocus();
    return;
   }
  }
 }
 public void focusLost(FocusEvent e){
  
 }
 
 public void view(int ii){
  
  Exam03_sub1 imsi = (Exam03_sub1)vc.elementAt(ii);
  ata.setText("이름 : " + imsi.getName() + "\n");
  ata.append("주민번호  : " + imsi.getJumin().substring(0,6)+ "-" + imsi.getJumin().substring(7,13) + "\n");
  ata.append("연락처 : " + imsi.getTel() + "\n");
  ata.append("주소: " + imsi.getAddr() + "\n");

  
  int[] jumin = new int[13];
  for(int i = 0 ; i < 13 ; i ++ ){
   jumin[i] = imsi.getJumin().charAt(i) - 48;
  }
  int year = 0 , month = 0, day = 0;
  if(jumin[6] == 0 || jumin[6] == 0){
   year = 1800;
  }
  else if (jumin[6] == 1 || jumin[6] == 2){
   year = 1900;
  }
  else if (jumin[6] == 3 || jumin[6] == 4){
   year = 2000;
  }
  year += jumin[0] * 10 + jumin[1] ;
  month = jumin[2] * 10 + jumin[3];
  day = jumin[4] * 10 + jumin[5];
  ata.append("생년월일 " + year + " 년" + month + "월" + day + "일 \n");
  Calendar ca = Calendar.getInstance();
  ata.append("나이 : " + ((int)ca.get(Calendar.YEAR) - year) + "세 \n");
  ata.append("성별 " + ((jumin[6] % 2 == 0) ? "여성" : "남성"));
 }
 
 
 
 
}
public class Exam03 {
 public static void main(String[] ar){
  Exam03_sub es = new Exam03_sub(" 사용자 관리 프로그램 ");
 }
}

 

'JAVA > Swing' 카테고리의 다른 글

JInternalFrame , JDesktopPane  (0) 2013.02.28
GlassPane  (0) 2013.02.28
[ 주민등록번호 계산 공식 ]  (0) 2013.02.27
InternalFrame Event , ListSelectionListener  (0) 2013.02.27
Ancestor Event , Caret Event , Change Event  (0) 2013.02.27