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을 클릭하면 다음과 같이 선택한 행의 레코드가 새로운 창에 보여지는 것을 확인할 수 있습니다.
'프로그래밍언어 > Java' 카테고리의 다른 글
JTable의 셀에 JCheckBox와 JButton같은 컴포넌트 삽입하기 - I (2) | 2019.06.25 |
---|---|
JTable의 레코드 한 개만 선택하기 (0) | 2019.06.25 |
JTable을 셀을 클릭했을때 이벤트 처리하기 (0) | 2019.06.25 |
JTable의 진실 (0) | 2019.06.25 |
JSplitPane을 이용하여 화면을 분할하고 JPanel에 Border 적용하기 (0) | 2019.06.25 |