Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

칠리설탕의 it

JTable안에 Checkbox 배치 본문

JAVA & JDBC/Study

JTable안에 Checkbox 배치

chillisugar 2024. 9. 8. 14:50

안녕하세요. 오늘은 JTable안에 checkbox를 만들어 보도록 하겠습니다.

 

우선 기본적인 JTable을 만들어보도록 하겠습니다.

 

 

위와 같은 코드를 실행하면 아래의 그림과 같이 JTable이 생성됩니다.

 

여기서 선택부분에 Checkbox를 넣어보도록 하겠습니다.

 

결과적인 코드를 먼저보면 아래와 같은 코드를 작성해야 합니다.

 

DefaultTableModel클래스는 JTable과 같이 사용되는 데이터 모델 클래스로 테이블에 표시할 데이터와 열 이름을 관리하며, 데이터를 추가하거나 제거하는 등의 기능을 제공하는 클래스입니다.

 

익명 클래스를 이용해 DefaultTableModel를 상속받는 새로운 익명클래스를 정의하고 익명클래스 안에서 getColumnClass() 메소드를 재정의해주겠습니다.

 

getColumnClass() 메소드는 JTable안에 특정 열의 데이터 타입을 반환하는 역할을 하며 columnIndex는 열의 인덱스를 말하며 0부터 시작하는 정수를 나타냅니다.

case문을 통해 0번째 열은 Boolean타입으로 체크박스가 들어가게 되며 나머지 열은 String타입으로 설정됩니다.

 

이렇게 코드를 추가하면 아래의 사진과 같이 Checkbox가 나오게 됩니다.

 

 

 

 

여기에서 조금 더 나아가 JTable의 열에 존재하는 선택을 누르면 전체가 선택이 되고 전체선택이 된 상태에서 다시 선택을 누르면 전체해제가 되는 방법을 알아보겠습니다.

 

우선 메소드를 이용해 모든 행의 Checkbox가 선택되었는지 확인하는 메소드를 만들고 만일 모든행이 선택되어있지 않다면 모두 선택하고 모두 선택되어있으면 해제 하는 메소드를 작성하겠습니다.

 

check() 함수에서 모두 체크되어있으면 true를 반환, 모두 체크되어있지 않으면 false를 반환하게 됩니다.

 

 

check()함수와 allcheck()함수를 이용하여 저희가 원하는 값을 얻도록 코드를 만들겠습니다.

JTable의헤더(열 제목)에 마우스 이벤트 리스너를 추가하여 만일 allSelected변수가 true이면 allcheck함수를 통해 전부 해제, allSelected변수가 false이면 allcheck함수를 통해 전부 선택하게 코드를 작성했습니다.  

 

 

아래는 결과 동영상입니다.