TableModelEvent — 테이블 모델 변경 이벤트

TableModelEvent — 테이블 모델 변경 이벤트

TableModelEvent는 테이블 모델이 변경되었을 때 리스너에게 알리는 이벤트입니다. 변경된 행과 열의 범위를 좌표로 나타냅니다.

출처: Java API Reference

본문

public class TableModelEvent extends EventObject

TableModelEvent는 테이블 모델이 변경되었을 때 리스너에게 알리는 데 사용합니다. 모델 이벤트는 TableModel의 변경을 설명하며, 모든 행·열 참조는 모델의 좌표계를 기준으로 합니다. 생성자의 매개변수에 따라 다음 유형의 변경을 지정할 수 있습니다.

  • TableModelEvent(source); — 데이터, 즉 모든 행이 변경됨
  • TableModelEvent(source, HEADER_ROW); — 구조 변경, TableColumn 재할당
  • TableModelEvent(source, 1); — 1행 변경
  • TableModelEvent(source, 3, 6); — 3~6행(포함) 변경
  • TableModelEvent(source, 2, 2, 6); — (2, 6) 셀 변경
  • TableModelEvent(source, 3, 6, ALL_COLUMNS, INSERT); — (3, 6) 행 삽입
  • TableModelEvent(source, 3, 6, ALL_COLUMNS, DELETE); — (3, 6) 행 삭제

매개변수의 다른 조합도 가능하지만 전부 의미가 있는 것은 아닙니다. 하위 클래스를 만들면 이벤트가 '발생할 것인지', '발생했는지'와 같은 추가 정보를 넣을 수 있습니다. DELETE 이벤트에서 행 지정을 더 유용하게 하지만, JTable은 사후 알림만 필요하므로 swing 패키지에는 포함되지 않았습니다. 이 클래스의 직렬화된 객체는 향후 Swing 버전과 호환되지 않을 수 있습니다. 현재 직렬화 지원은 단기 저장이나 같은 버전의 Swing을 실행하는 애플리케이션 간 RMI에 적합합니다. 1.4부터 모든 JavaBean의 장기 저장 지원이 java.beans 패키지에 추가되었으니 XMLEncoder를 참고하세요.

INSERT

public static final int INSERT

새 행이나 열의 추가를 식별합니다.

UPDATE

public static final int UPDATE

기존 데이터의 변경을 식별합니다.

DELETE

public static final int DELETE

행이나 열의 제거를 식별합니다.

HEADER_ROW

public static final int HEADER_ROW

헤더 행을 식별합니다.

ALL_COLUMNS

public static final int ALL_COLUMNS

행 또는 여러 행의 모든 열을 지정합니다.

type

protected int type

이벤트의 유형입니다.

firstRow

protected int firstRow

변경된 첫 번째 행입니다.

lastRow

protected int lastRow

변경된 마지막 행입니다.

column

protected int column

이벤트의 열입니다.

TableModelEvent

public TableModelEvent(TableModel source)

테이블의 모든 행 데이터가 변경되었습니다. 리스너는 행에 기반한 상태를 버리고, TableModel에 다시 질의하여 새 행 수와 값을 가져와야 합니다. JTable은 이 이벤트를 받으면 보이는 셀 값을 모델에 질의해 보이는 전체 영역을 다시 그립니다. 테이블의 구조, 즉 열 이름·유형·순서는 변경되지 않았습니다.

  • 매개변수: source - 이 이벤트의 영향을 받은 TableModel

TableModelEvent

public TableModelEvent(TableModel source, int row)

이 행의 데이터가 갱신되었습니다. 완전히 새로운 구조의 테이블이 도착했음을 나타내려면 row 값으로 HEADER_ROW를 사용합니다. JTable이 이 이벤트를 받고 autoCreateColumnsFromModel 플래그가 설정되어 있으면 기존 TableColumn을 버리고 모델에 나타난 순서대로 기본 열을 재할당합니다. 이는 JTable에 setModel(TableModel)을 호출하는 것과 같습니다.

  • 매개변수: source - 이 이벤트의 영향을 받은 TableModel

TableModelEvent

public TableModelEvent(TableModel source, int firstRow, int lastRow)

[firstRow, lastRow] 범위의 행 데이터가 갱신되었습니다.

  • 매개변수: source - 이 이벤트의 영향을 받은 TableModel

TableModelEvent

public TableModelEvent(TableModel source, int firstRow, int lastRow, int column)

[firstRow, lastRow] 범위에서 column 열의 셀이 갱신되었습니다.

  • 매개변수: source - 이 이벤트의 영향을 받은 TableModel

TableModelEvent

public TableModelEvent(TableModel source, int firstRow, int lastRow, int column, int type)

(firstRow, column)부터 (lastRow, column)까지의 셀이 변경되었습니다. column은 모델 좌표계의 셀 열 인덱스를 가리킵니다. column이 ALL_COLUMNS이면 지정된 행 범위의 모든 셀이 변경된 것으로 간주합니다. type은 INSERT, UPDATE, DELETE 중 하나여야 합니다.

  • 매개변수: source - 이 이벤트의 영향을 받은 TableModel

getFirstRow

public int getFirstRow()

변경된 첫 번째 행을 반환합니다. HEADER_ROW는 열의 이름·유형·순서와 같은 메타 데이터를 뜻합니다.

  • 반환값: 변경된 첫 번째 행을 나타내는 정수

getLastRow

public int getLastRow()

변경된 마지막 행을 반환합니다.

  • 반환값: 변경된 마지막 행을 나타내는 정수

getColumn

public int getColumn()

이벤트의 열을 반환합니다. 반환값이 ALL_COLUMNS이면 지정된 행의 모든 열이 변경되었음을 뜻합니다.

  • 반환값: 이 이벤트가 영향을 주는 열을 나타내는 정수

getType

public int getType()

이벤트 유형을 반환합니다 — INSERT, UPDATE, DELETE 중 하나입니다.

  • 반환값: 테이블 모델의 변경 유형, 행이나 열의 INSERT 또는 DELETE, 또는 데이터에 대한 UPDATE

더 알아보기