JTable에서 선택한 레코드를 새로운 창을 띄워 보여주도록 하겠습니다.

이렇게 구현하려면 새로운 창을 띄울때 생성자로 선택한 레코드에 대한 데이터를 주도록 해야 합니다.

[그림1-1]테이블에서 레코드를 선택하면 [그림1-2]에 선택한 레코드 데이터를 부려주도록 하겠습니다.

 

[그림1-1]

 


[그림1-2]

 

선택한 레코드를 클릭했을때 실행되도록 할 것이므로 MouseListener를 구현하여 작업하도록 하겠습니다. mouseClicked메소드를 오버라이딩하여 선택한 레코드가 MemberDTO로 변환되고 새로 실행될 창에 전달되도록 다음과 같이 작성합니다.

public void mouseClicked(MouseEvent e) {
  //선택한 셀의 행 번호계산 
  int row = table.getSelectedRow();
  
  //테이블의 모델객체 얻어오기
  TableModel data = table.getModel();
  
  //선택한 테이블의 row의 모든 값을 이용하여 MemberDTO객체 생성하기
  String id = (String)data.getValueAt(row,0);
  String pass = (String)data.getValueAt(row,1);
  String name = (String)data.getValueAt(row,2);
  String addr = (String)data.getValueAt(row,3);
  String memo = (String)data.getValueAt(row,4);
  
  MemberDTO selectUser =
    new MemberDTO(id, pass, name, addr,100, memo,"001");
  
  //새 창을 띄우면서 dto객체를 넘기기
  DataInfo frame = new DataInfo(selectUser);
  
 }​

 

새로 열리게 될 창에서도 전달될 MemberDTO객체를 받을 수 있도록 멤버변수를 선언하고 셋팅하는 작업을 처리해야 합니다.

MemberDTO user;
 public DataInfo(MemberDTO user){
  //기본작업을 모두 수행해서 화면을 display
  super("작업");
  this.user = user;
  display();
  startEvent();
  setSize(200,250);
  setVisible(true);
  setDefaultCloseOperation(EXIT_ON_CLOSE);
 }​

 

자 , 이제 새로 열리게될 창에서 텍스트상자에 값을 셋팅만 하면 되겠네요?

txtId.setText(user.getId());
txtPass.setText(user.getPass());
txtName.setText(user.getName());
txtaddr.setText(user.getAddr());
txtmemo.setText(user.getMemo());

 

실행하고 JTable을 클릭하면 다음과 같이 선택한 행의 레코드가 새로운 창에 보여지는 것을 확인할 수 있습니다.

 

 

 

 

DataInfo.java
0.00MB
JTableFormShowTest.java
0.00MB

+ Recent posts