대여페이지는 보고싶은 책을 선택하여 대여하는 기능들이 있다.
(광고 페이지와 마찬가지로 데이터베이스 서버가 닫혀 현재 사진을 찍을수 없음으로
예전에 찍었던 사진또는 ppt사진으로 대신하겠다)
현재 보이는 것이 대여페이지이며
버튼을 눌렀을때의 엑션과 주요 기능들을 먼저 소개하겠다
1. 메인버튼: 메인으로 이동할 수 있는 버튼이다.
2. 카테고리/검색: 사용자가 선택한 카테고리의 내용으로 책 검색이 가능하다.
3. Jtable 테이블: 총 4개의 페이지로 구성이 되어있으며 끝까지 이동후에는 5,6,7,8번 페이지로 이동이 가능하다
버튼은 숫자버튼을 눌러서도 이동이 가능하며 >버튼을 눌러서도 이동이 가능하다
4. Jtable 테이블: 사용자가 더블클릭하여 선택한 책을 아래 테이블로 이동시키며 윗 테이블에서는
사라지게 하여주고 검색을 다시하여도 동일한 책이 여러권 있다면 나오지만 같은 ID값을 가진 책은
나오지 않는다.
5.테이블 하이라이트 구현: DefaultTableCellRenderer클래스를 상속받아 클릭된 셀을 행 별로 색상을 바꾸어줬다
6. 선택 완료버튼: 사용자가 보고싶은 책을 모두 고른후 선택완료를 누르면 책들이 대여되며
이때에 책은 인당 최대 3권 빌릴수 있게 제한해뒀기에 앞서 빌린책이 있다면 앞으로 빌릴수 있는책이
몇권 남았는지 알려준다.
[initTableBookList()]
이중 배열로 값을 받아 초기 테이블의 열과 행의값을 초기화하여주는 메서드이다.
[initPagingButtons()] 메서드
페이지의 버튼들을 모아놓은 메서드이며 ButtonGroup을 만들어 버튼들을 그룹화 해두었다.
버튼을 그룹화 해두었을때의 이점은 1개의 버튼을 누르면 그 버튼은 on이 되고
그룹에 포함되어있는 나머지 버튼이 off가 된다는것이다.
이 버튼들은 초기에 어떠한 버튼도 선택되어 있지 않기때문에 setSelected를 이용해 firstPageButton을 선택하여
첫번째 페이지의 정보들을 불러와준다.
선택된 버튼은 색이 변화되며 JToggleButton을 상속받은 BookListPagingButton 클래스에서
isSelected() 메서드를 이용하여 (토글의 버튼이 선택되면 true, 아닐때는 false를 반환)
선택된 버튼의 글자색을 흰색으로 바꾸고 배경색을 살구색 으로 변경해준다. (paintComponent()를 이용하여 선택된 버튼을 다시 그려주는것이다)
[selectPagingNumberButtonListener]클레스
[removeAllRows()]메서드
[insertNewAllRows()]메서드
※ 클래스와 메서드가 전부 연결되어있음으로 모두 한번에 설명하겠다.
1. 눌린 버튼의 소스를 받아 currentPage에 전달하여(현재 눌린버튼을 의미) 누른 버튼을 클릭하여주고(doclick()을 통하여 강제클릭) startIndex에는 누른 버튼의 getText값을 전달하여준다.
2. removeAllRows()메서드를 통하여 현재 테이블에 있는 행의 개수 값을 전달받고
반복문과 removeRow()메서드를 통하여 테이블에 있는 데이터를 삭제하여준다.
3.insertNewAllRows()메서드를 통하여 model에 값을 전달하여 테이블에 값을 띄워준다
책의 개수가 5개보다 작다면 책의 개수만큼 띄우고 만약 5개 이상이라면 startIndex에 전달받은 값 + 5를 전달하여 띄워준다.
쉬운 예시를 들자면
(getText() - 1) * 5가 0일때에는 0+5가 되어 bookList에 0번부터 4번까지 총 5개의
책을 꺼내와 테이블의 값을 초기화하여주고
(getText() - 1) * 5가 5일때에는 5+5가 되어 bookList에 5번부터 9번까지
총 5개의 책을 꺼내와 테이블의 값을 초기화하여 주는 것이다.
[selectPrevPageButtonListener]클래스
액션리스너를 상속받은 해당 클래스는 이전버튼(<) 버튼이 눌릴때에 startPage값이 1이 아니라면,
((>)버튼을 눌렀을때에 5페이지로 넘어간다면 startPage의 값이 5가된다
그렇기에 한번 페이지가 5,6,7,8로 넘어가서 startPage가 (<)버튼을 눌렀을때에 1이 아니라면 값을 -4해주고
1,2,3,4로 버튼들의 값을 바꿔주고 5번 페이지에서 넘어왔음으로 4번 페이지 버튼을 doclick()을
이용해 강제로 클릭해준다.
그 외에 이프문들은 간단하게 (<)버튼이기 때문에 4번 페이지에서 (<)를 누른다면 3번을 강제클릭해주는 과정을
1번 페이지까지 반복하는 것이다.
[selectNextPageButtonListener]클래스
액션 리스너를 상속받은 해당 클래스는 (>)버튼을 누를때에 현재 페에지의 값을 받아
다음 페이지 버튼을 doclick()을 이용하여 강제로 클릭하여 다음 페이지의 버튼이 눌리게 하는 기능을하며
만약 4번째 페이지에서 (>)버튼을 클릭했을시에는 5번 페이지로 넘어가야 하는데 책이 20권이 넘는지,
다음책이 있는지 확인해줘야 한다
booklist.size()가 21이라 가정했을때에 booklist.size() % 5 가 0과 같지않다면 (booklist.size() / 5) + 1
같다면 booklist.size() / 5
즉, 21일때 0과 같지않다면 5+1 = 6이되고 listSize가 더 크기 때문에
다음 페이지로 넘어가 버튼들의 택스트 값은 5,6,7,8로 초기화되며
fistPageButton을 doclick으로 강제 클릭하여 다음 페이지의 첫 버튼인 5번 버튼이 눌리게 해주며
booklist.size()가 20이라 가정했을때에 0과 같다면 listSize는 5가되고 5 < 5 는 false이기 때문에
버튼들의 값이 1,2,3,4에 머물게된다.
SearchedTableTopPanel 클래스의 주요 기능들에 대한 설명이였으며
아직 생성자에 대한 설명과 underPanel(하단 테이블)에 대한 설명이 남아있으며
두 테이블이 값을 주고 받는것에 대한 설명이 남아있다....!
다음 포스팅에서 계속 이어가도록 하겠다.
'Team Project > 무인 도서 대여,반납기' 카테고리의 다른 글
RentalPage 3.UnderPanel + 저장소 클레스 (0) | 2021.10.05 |
---|---|
RentalPage 2.TopPanel constructor (0) | 2021.09.14 |
Advertising Frame 주요 기능 설명 2. (0) | 2021.09.08 |
Advertising Frame 주요 기능 설명 1. (1) | 2021.08.26 |
Main Frame 주요 기능 설명 (0) | 2021.08.25 |