[Swing 실습 - 회원관리 프로그램] MemberView

2009. 6. 23. 17:47 - 에릭투스

package table;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;

// 회원관리 프로그램 view 보여주기 담당
public class MemberView extends JFrame
        implements ActionListener {
 JTable table;
 MemberModel model;
 JScrollPane sp;
 JPanel pa;
 JLabel la1, la2, la3;
 JTextField tf1, tf2, tf3;
 JButton bt1, bt2, bt3; // 회원추가, 회원수정, 회원삭제
 JDialog uDialog; // update용 다이얼로그
 JLabel ud_title, ud_no, ud_name, ud_addr, ud_memberNo;
 JTextField ud_tf1, ud_tf2;
 JButton ud_bt1, ud_bt2;
 JPanel ud_pa;
 
 public MemberView() {
  super("회원관리 프로그램 v0.1"); // JFrame("~~~");
  model = new MemberModel();
  table = new JTable(model);
  sp = new JScrollPane(table);
  pa = new JPanel(new GridLayout(3,3)); // FlowLayout -> GridLayout
  la1 = new JLabel("회원번호");
  la2 = new JLabel("이름");
  la3 = new JLabel("주소");
  tf1 = new JTextField("번호", 5);
  tf2 = new JTextField("이름", 5);
  tf3 = new JTextField("주소", 5);
  bt1 = new JButton("회원추가");
  bt2 = new JButton("회원수정");
  bt3 = new JButton("회원삭제");
  uDialog = new JDialog(this, "회원수정", true);
  ud_title = new JLabel("회원수정", JLabel.CENTER);
  ud_no = new JLabel("회원번호", JLabel.CENTER);
  ud_name = new JLabel("회원이름", JLabel.CENTER);
  ud_addr = new JLabel("회원주소", JLabel.CENTER);
  // memberNo은 나중에 업데이트시 회원번호를 세팅
  ud_memberNo = new JLabel("", JLabel.CENTER);
  ud_tf1 = new JTextField(5);
  ud_tf2 = new JTextField(5);
  ud_bt1 = new JButton("OKAY");
  ud_bt2 = new JButton("CANCEL");
  ud_pa = new JPanel(new GridLayout(4, 2));
 }
 
 private void setup() {
  la1.setHorizontalAlignment(JLabel.CENTER);
  la2.setHorizontalAlignment(JLabel.CENTER);
  la3.setHorizontalAlignment(JLabel.CENTER);
 
  tf1.setEditable(false);
  tf2.setEditable(false);
  tf3.setEditable(false);
  tf1.setBackground(Color.white);
  tf2.setBackground(Color.white);
  tf3.setBackground(Color.white);
 
  bt1.addActionListener(this);
  bt2.addActionListener(this);
  bt3.addActionListener(this);
 
  table.setSelectionMode
   (ListSelectionModel.SINGLE_SELECTION);
 }

 private void setUDialog() {
  uDialog.add(ud_title, "North");
 
  ud_pa.add(ud_no);
  ud_pa.add(ud_memberNo);
  ud_pa.add(ud_name);
  ud_pa.add(ud_tf1);
  ud_pa.add(ud_addr);
  ud_pa.add(ud_tf2);
  ud_pa.add(ud_bt1);
  ud_pa.add(ud_bt2);
 
  uDialog.add(ud_pa, "Center");
 
  uDialog.pack();
 }

 public void execute() {
  setup();
  setUDialog();
 
  pa.add(la1);
  pa.add(la2);
  pa.add(la3);
  pa.add(tf1);
  pa.add(tf2);
  pa.add(tf3);
  pa.add(bt1);
  pa.add(bt2);
  pa.add(bt3);
 
  add(sp, "Center");
  add(pa, "South");
 
  //pack(); 자동으로 컴포넌트 크기 계산 사이즈 지정
  setSize(500, 300);
  setLocation(200, 100);
  setDefaultCloseOperation(EXIT_ON_CLOSE);
  setVisible(true);
 }
 
 public static void main(String[] args) {
  new MemberView().execute();
 }

 public void actionPerformed(ActionEvent e) {
  Object o = e.getSource();
  if(o == bt1) {
   if(bt1.getText().equals("회원추가")) {
    bt1.setText("완료");
    tf2.setText("");
    tf2.setEditable(true);
    tf3.setText("");
    tf3.setEditable(true);
    bt2.setEnabled(false);
    bt3.setEnabled(false);
   } else {
    // DB 회원 추가~~
    // 이름 주소 넣은 MemberBean 객체 만들고
    MemberBean bean = new MemberBean();
    bean.setName(tf2.getText());
    bean.setAddr(tf3.getText());
    model.addMember(bean);
   
    bt1.setText("회원추가");
    tf2.setText("이름");
    tf2.setEditable(false);
    tf3.setText("주소");
    tf3.setEditable(false);
    bt2.setEnabled(true);
    bt3.setEnabled(true);
   
    model.init(); //model의 멤버변수 data를 갱신
    table.invalidate(); // 갱신된 데이터를 화면에 다시 로딩
   }
  } //if(o == bt1) end
  else if(o == bt2) {
   uDialog.setVisible(true);
  }
  else if(o == bt3) {
   //회원삭제
   int row = table.getSelectedRow(); //선택된 행
   // row에 해당하는 회원번호를 가져와야 한다.
   int no = (Integer)model.getValueAt(row, 0); // 회원번호
   // 삭제
   model.delMember(no);
   model.init(); //model의 멤버변수 data를 갱신
   table.invalidate(); // 갱신된 데이터를 화면에 다시 로딩
   validate(); // JFrame의 화면 갱신
  }
 }
}

다른 카테고리의 글 목록

자바 기본 공부/스윙 기초 카테고리의 포스트를 톺아봅니다