AbstractTableModel을 사용하여 JTable 만들기

JTable 에는 연관된 모델이 있습니다. 당신은 이것을 깨닫지 못할 수도 있지만 2 차원 배열을 만들 때 기본적으로 생성됩니다 :

개체[][] 데이터 = {{1,2,3},{2,3,4},{4,5,6},{7,8,9}};
문자열[]  제목= {"열 1", "Column2", "Column3"};
JTable 예JTable = new JTable (데이터, 열 이름)};

다행히도  테이블 템플릿을 거치지 않고 JTable 개체를 사용할 수 있습니다. 예를 들어, 셀 (2, 3)의 방법을 찾으려면 getValueAt:

System.out.println(exampleJTable.getValueAt(2, 2));
JTable 객체는 DefaultTableModel  테이블의 데이터가 표시되는 방식을 제어하고 데이터 관리를 테이블 모델에 맡기기 때문입니다. 모델이 사용자 정의되지 않은 경우 DefaultTableModel이 사용됩니다. <JTable.>

TableModel byDefault = exampleJTable.getModel();
System.out.println(exampleJTable.getValueAt(2, 2).toString());
인터페이스 TableModel 데이터가 JTable과 상호 작용하는 방법을 정의합니다. 이렇게 하면 Java에서 테이블을 더 쉽게 만들고 사용할 수 있습니다. 테이블 모델이 JTable과 연결되면 JTable이 데이터에 액세스하는 방법에 대해 걱정할 필요가 없습니다. 템플릿을 만들고 사용하는 것만 걱정하면 됩니다.

TableModel 인터페이스를 구현하는 두 개의 클래스, DefaultTableModel AbstractTableModel.
  • AbstractTableModel은 대부분의 TableModel 메서드를 구현합니다.
  • DefaultTableModel 은 데이터가 배열에 저장되는 세 가지 구현 된 메소드가있는 AbstractTableModel 의 서브 클래스입니다.
    • public int getRowCount():  반품  줄 수.
    • public int getColumnCount(): 열 수를 반환합니다.
    • public Object getValueAt(int row, int column): (행, 열) 상자에 개체를 반환합니다.
AbstractTableModel 또는 DefaultTableModel 은 데이터와 관련이 있습니다. DefaultTableModel은 Vector 구조체를 사용합니다. 이 구현은  지원됨  Java와 프로그래밍 관점에서도. 큰 부분은  이 구현이 응용 프로그램에 문제를 일으키는지 알아야합니다.

AbstractTableModel을 사용하면 데이터를 자유롭게 저장할 수 있지만 JTable과 상호 작용할 수 있는 메서드를 구현해야 합니다. 구현되는 메서드의 수는 데이터 관리 방법에 따라 달라집니다. 읽으려면 언급 된 3 가지 방법 만 충분하지만 수정 (행 또는 열 추가, 삭제)하려면 테이블의 템플릿에 저장된 데이터를 수정하는 다른 방법을 구현해야합니다.

테이블 모델 생성

class 모델은 AbstractTableModel{
private Object[][] 데이터를 확장합니다.
개인 문자열[] 제목;

public Model(Object[][] data, String[] title){
this.data = data;
this.title = 제목;
}
/**
* 열 제목과 인덱스를 반환합니다
*/
public String getColumnName(int col) {
return this.title[col];
}
/**
* 열 수를 반환합니다
*/
public int getColumnCount() {
return this.title.length;
}
/**
* 행 수를 반환합니다
*/
public int getRowCount() {
return this.data.length;
}
/**
* 행과 열의 교차점에 있는 객체를 반환합니다
*/
public Object getValueAt(int 행, int col) {
return this.data[행][col];
}
/**
* 행과 열이 교차하는 곳에서 개체 수정
*/
public void setValueAt(Object value, int row, int col) {
this.data[row][col] = value;
}
}
이 코드는 템플릿을 테이블과 연결합니다
//JTable
JTable 테이블 = new JTable();
//템플릿 만들기
모델 = new 모델 (데이터, 제목);
//템플릿을 JTabletable.setModel (모델);