칠리설탕의 it
Day9(고객조회 버튼에 대한 ActionListener) 본문
이제 고객조회 화면에 있는 "조회", "전체 보기", "수정", "삭제", "닫기" 버튼들에 대해 ActionListener를 만들어주는 과정을 진행하겠습니다.
고객에 대한 정보는 Mysql에 customer테이블에 존재합니다.
Day8에 만든 Gui화면을 이용하여 설명을 하겠습니다.
우선 첫번째인 "조회"버튼에 대해 코드를 작성해보겠습니다.
다들 아시는 것과 같이 성명옆에 존재하는 JTextField에 원하는 이름을 작성하고 조회를 하면 작성한 이름에 대한 정보가 출력이 되게 해야합니다. 그러기 위해서는 JTextField를 전역변수로 설정을 해주고 Mysql구문을 만들어주도록 하겠습니다.
이 구문은 JTextField에 입력한 문자와 customer테이블 동일한 문자가 일치하는 항목을 검색하는 구문입니다.
이후 "customer"테이블과 연결을 하고 Sql문을 실행하기 위한 Statement객체를 생성해주겠습니다.
Sql문을 실행한 후 결과값을 ResultSet에 저장을 하고 ResultSet이 존재하지 않을때까지 for문을 이용하여 JTextField에 입력한 문자와 customer테이블 동일한 문자가 일치하는 항목테이블의 한행씩 읽어와 Vector에 저장하겠습니다.
이 후 Vector에 저장된 결과값을 JTable에 나타나도록 하는 코드를 작성하겠습니다.
여기서 코드를 보면 try-catch구문 안에 rowData.clear()이라는 코드가 있는것을 볼수 있습니다. 이 코드는 만일 전체보기를 눌렀다가 조회버튼을 누르면 전체보기에 대한 결과값 아래에 조회버튼에 대한 결과값이 붙어서 나오기 때문에 누를때마다 전에 사용한 버튼에 대한 결과값을 초기화 시키는 과정이라 보시면 되겠습니다.
두번째인 "전체보기"버튼에 대해 코드를 작성해보겠습니다.
"전체보기" 버튼은 "조회"버튼에 대해 이해를 하셨다면 매우 쉬울것 입니다.
전체적인 틀은 같고 Sql구문만 아래와 같이 변경을 해주시면 됩니다.
세번째인 "수정"버튼에 대해 코드를 작성해보겠습니다.
문제에서 주어진 조건을 보겠습니다.
int selection = jt.getSelectedRow(); 이라는 함수를 이용해 마우스를 이용해 JTable에 누른 행의 정보를 selection변수를 통해 받아옵니다. 이후 selection변수를 통해 받은 정보를 Vector에 저장을 합니다. 또한 "수정" 버튼을 눌렀을때 Gui가 생성되어야 하기에 Vector과 JTable을 매개변수로 하여 Gui가 생성되는 클래스를 하나 생성하도록 하겠습니다.
저는 생성되는 클래서의 이름을 Customer_modify로 하였습니다. 또한 생성되는 Gui를 보시면 Day7에서 생성한 Gui와 같기때문에 Gui틀에 대해서는 설명을 생략하겠습니다. 혹시 Gui틀에 대해 다시 보고 싶다! 하시면 아래에 링크를 첨부하겠습니다.
Day7(고객등록 GUI)
오늘은 Day6에 만든 GUI에서 한번 더 나아가 고객등록 버튼을 눌렀을때 조건에 맞추어 GUI가 나타나도록 만들어보겠습니다. 만들어야 하는 GUI의 조건에 대하여 말씀드리겠습니다. ● 보험계약 관
chilisugar-project.tistory.com
조금 다른점이 있다면 고객코드와 고객명이 전부 비활성화 되야합니다.
아래와 같이 매개변수를 통해 받은 Vector의 정보를 통해 JTextField를 채우고 고객코드와 고객명이 비활성화되는 코드입니다.
이제 이름과 고객코드를 제외한 나머지 JTextField부분에 수정해야 할 부분이 있으면 수정을 완료하고 "수정" 버튼을 눌렀거나 수정할 부분이 없어 "닫기" 버튼을 눌렀을때 ActionListenr를 걸어주도록 하겠습니다.
여기서 i = 2부터 시작인데 고객코드와 고객명은 바뀌면 안되기에 2부터 시작을 했고 v.set() 함수를 이용하여 매개변수로 받은 Vector에서 수정된 부분을 다시 Vector에 저장하는 코드입니다. 이후 JTable을 업데이트하여 수정된 정보가 보이도록 코드를 만들었습니다.
이렇게 하면 수정이 끝난것 같지만 아닙니다.ㅠㅠ 왜냐하면 수정된 부분을 Mysql에도 수정을 해줘야하기 때문이죠!
이제 Mysql에 수정하는 코드를 짜보도록 하겠습니다.
Sql문을 실해시키기 위한 PreparedStatement 객체를 생성하겠습니다.
Mysql에서 수정을 하는 Sql구문을 작성해보도록 하겠습니다.
이 Sql구문은 "customer"테이블에서 code와 name이 일치하는 정보의 birth, tel, address, company를 업데이트 하는 구문입니다. 이후 PreparedStatement객체를 이용하여 Sql구문을 실행시켜주겠습니다.
이후 Sql구문에 들어있는 ?에 해당하는 값을 넣어주기 위한 코드를 작성해주겠습니다. ?에 해당하는 값을 다 넣어줬다면 Sql문을 데이터베이스에 보내는 psmt.executeUpdate()를 사용합니다.
이렇게 하면 수정에 대한 부분도 완성했습니다.
이제 "삭제" 버튼에 대한 코드를 작성해보겠습니다.
"삭제" 버튼도 "수정"버튼과 같이 삭제할 행을 누르고 그 행에 대한 정보를 Vector에 저장을 해주도록 하겠습니다.
하지만 만일 선택된 행이 없을때 삭제할 행을 선택하라는 JOptionPane을 만들어주도록 하겠습니다.
이후 행이 선택됬다면 그 선택된 행의 고객명을 Vector에서 가져와 JOptionPanel의 showConfirmDialog를 이용하여 정말 삭제할것인지 물어보고 "확인"버튼을 누르면 아래와 같은 코드를 작성해 JTable에서 삭제 시키겠습니다.
이제 Mysql에서 데이터를 삭제시키기 위한 Sql문을 작성하도록 하겠습니다.
Vector의 0번째 index의 정보를 customer테이블의 code와 비교하여 일치하면 삭제하는 Sql문입니다.
이후 Sql문을 실행시키기 위한 PreparedStatement객체를 생성해주고 Sql문을 생성합니다. 이후 psmt.executeUpdate(); 코드를 사용해 Sql문을 실행시키고 jt.updateUI(); 코드를 사용하여 JTable을 업데이트 합니다.
드디어 마지막! "닫기" 버튼에 대한 코드를 작성하겠습니다.
정말 간단합니다. dispose()함수를 이용하면 화면을 지웁니다.
이렇게 전부 완성했습니다. 결과에 대한 동영상을 한번 보시겠습니다!!
아래는 전체 코드입니다
아래는 "수정"버튼을 눌렀을때 생성되는 Gui에 대한 코드입니다.
'JAVA & JDBC > Project(보험 설계 프로젝트)' 카테고리의 다른 글
Day11(보험계약 Gui의 ActionListener) (0) | 2024.03.29 |
---|---|
Day10(보험계약 관리화면 Gui) (0) | 2024.03.22 |
Day8(고객조회 GUI 생성) (1) | 2024.03.09 |
Day7(고객등록 GUI) (1) | 2024.03.02 |
Day6(Login 성공 시 나타나는 창화면) (1) | 2024.02.27 |