defaulttablemodel 예제

이 문서에서는 JTable의 간단한 예제를 보여 주며 있습니다. Java의 스윙 API의 일부로 제공되는 JTable 구성 요소는 2차원 데이터를 표시/편집하는 데 사용됩니다. 이는 스프레드시트와 유사합니다. 열 값은 해당 형식에 따라 선언됩니다. 예를 들어 id는 int 값을 보유하고, 이름은 문자열 값을 보유하고, 시간당 요금은 이중 값을 보유하며, 파트 타임 상태는 부울 값을 보유합니다. 이것은 우리가 실제 값을 모두의 문자열 값으로 표현할 수 있기 때문에 중요합니다. 이 정보는 columnClass라는 배열 변수에 보관됩니다. 클래스 형식은 표시해야 하는 데이터 값에 해당하는 것으로 선언됩니다. 예를 들어 첫 번째 값은 Integer.class입니다. 첫 번째 열은 정수 값을 표시하도록 되어 있는 `id`이기 때문입니다. 마찬가지로 세 번째 열 `시간당 요금`은 소수값을 표시하므로 형식이 Double로 선언됩니다. 몇 가지 예를 살펴보겠습니다. 조직에 속한 직원 목록을 표시한다고 가정합니다.

이렇게 하면 직원의 다양한 특성이 표시됩니다. 예를 들어 직원 ID, 이름, 시간당 요금, 파트타임 상태 등 디스플레이는 행과 열의 데이터베이스 테이블 표시와 비슷합니다. 이 경우 id, 이름, 시간당 요금은 열입니다. 행 수는 조직의 직원 수에 따라 다를 수 있습니다. 추상 테이블모델 클래스에도 관심이 있을 수 있습니다. 이 클래스를 사용하면 원하는 위치에 데이터를 저장할 수 있는 JTable에 대한 사용자 지정 테이블 모델을 만들 수 있습니다. 벡터 벡터에 있을 필요는 없습니다. JTable의 작동 방식을 이해하기 위해 조금 더 디그렛해 봅시다. 스윙 API의 모든 구성 요소는 MVC 패턴을 기반으로 합니다. 여기서 JTable은 뷰를 제공하는 구성 요소입니다.

모델은 TableModel이라는 인터페이스에서 제공됩니다. 기본 구현은 DefaultTableModel로 명명된 스윙 API에서 제공됩니다. 이것은 우리가 아무것도 제공하지 않을 때 JTable에 의해 내부적으로 사용됩니다. 이것은 바로 위의 코드에서 일어난 일입니다. 만든 첫 번째 JTable은 2차원 개체 배열을 사용하여 행 데이터와 String 배열을 채우고 열 이름을 채웁니다. 이 프로그램은 테이블 모델의 TableModel 인터페이스로 이동하여 이 JTable에 대해 생성된 개별 테이블 셀에 대한 값을 얻고 설정할 수 있지만 데이터를 더 이상 조작하기 위해 DefaultTableModel에 도착할 수 없음을 보여 줍니다. 이 코드는 최소한의 노력으로 테이블을 작성하려고 시도합니다. 우선 열 헤더가 식별되고 String 배열 열에서 선언됩니다. 다음으로, 데이터라는 이름의 2d 개체 배열이 선언됩니다. 각 내부 배열은 데이터 행에 해당합니다. 각 배열 내에서 열은 쉼표로 구분됩니다.

하나는 우리가 false를 반환하는 cellEditable() 메서드입니다. 이는 단순히 테이블을 편집할 수 없다는 것을 나타냅니다. 이것은 간단한 변화입니다. . 하지만 기다려. 거기 더 있어. 마지막 열 `파트 타임`에는 확인란이 표시됩니다! 해당 행의 해당 데이터가 true이면 세 번째 행에 대한 확인란이 선택됩니다. 이 프로그램에는 몇 가지 문제가 있습니다. 첫째, 열이 제대로 정렬되지 않습니다. 모든 열은 우리가 원하지 않는 왼쪽 정렬됩니다.

숫자가 올바르게 정렬되기를 원합니다. 둘째, 프로그램을 실행할 때 테이블에서 사용자가 필드를 편집할 수 있음을 알 수 있습니다. 우리의 아이디어는 디스플레이 전용 테이블을 구축하는 것이었습니다. 마지막으로 JTable은 TableModel의 인스턴스를 사용하는 생성자로 만들어집니다. 이 경우 익명 인스턴스로 만든 모델 변수를 전달합니다. 두 번째 JTable은 먼저 데이터로 DefaultTableModel을 정의하여 만들어집니다. 이렇게 하면 JTable에서 테이블 모델의 모든 작업을 수행할 수 있습니다(예: 행 추가, 행 삽입, 행 제거, 열 추가 등).