CAFE

Java

[스윙(Swing)]TableModel 사용하기

작성자주인장|작성시간17.06.03|조회수24 목록 댓글 0

1. TableModel은 출력될 데이터를 가진 테이블을 제공하는 기능 수행 

- 테이블의 차원(열과 행의 수)

- 테이블의 각 열이 가지고 있는 데이터 타입 

- 출력될 열 헤더

- 각 셀의 값이 에디트될 수 있는지 여부


2. AbstractTableModel에 제공되는 메소드 

(1) 컬럼의 갯수를 반환한다.

@Override

public int getColumnCount() {

// TODO Auto-generated method stub

return 0;

}

(2) 행의 갯수를 반환한다.

@Override

public int getRowCount() {

// TODO Auto-generated method stub

return 0;

}

(3) 특정 셀과 관계된 값을 반환한다

@Override

public Object getValueAt(int rowIndex, int columnIndex) {

// TODO Auto-generated method stub

return null;

}


3. 간단한 예제 >> 

package jtable.datamodel;


import java.util.Calendar;

import java.util.GregorianCalendar;


import javax.swing.table.AbstractTableModel;


/**

 * 테이블에서 사용할 데이터 클래스

 */

public class TableVal‎ues extends AbstractTableModel{

public final static int FIRST_NAME = 0;

public final static int LAST_NAME = 1;

public final static int DATE_OF_BIRTH = 2;

public final static int ACCOUNT_BALANCE = 3;

public final static int GENDER = 4;

public final static boolean GENDER_MALE = true;

public final static boolean GENDER_FEMALE = false;

public Object[][] values = {

{"Clay", "Ashworth", new GregorianCalendar(1962, Calendar.FEBRUARY,  20).getTime(), 

new Float(12345.67), new Boolean(GENDER_MALE)}, 

{"Jacob", "Ashworth", new GregorianCalendar(1987, Calendar.JANUARY,  6).getTime(), 

new Float(23456.78), new Boolean(GENDER_MALE)}, 

{"Jordan", "Ashworth", new GregorianCalendar(1989, Calendar.AUGUST,  31).getTime(), 

new Float(34567.89), new Boolean(GENDER_FEMALE)}, 

{"Evelyn", "Kirk", new GregorianCalendar(1945, Calendar.JANUARY,  16).getTime(), 

new Float(-456.70), new Boolean(GENDER_FEMALE)},

{"Belle", "Spyres", new GregorianCalendar(1907, Calendar.AUGUST,  2).getTime(), 

new Float(567.00), new Boolean(GENDER_FEMALE)}

};


/**

* 컬럼의 갯수를 반환한다. 

* @return

*/

@Override

public int getColumnCount() {

return values[0].length;

}


/**

* 행의 갯수를 반환한다.

* @return

*/

@Override

public int getRowCount() {

return values.length;

}


/**

* 특정 행과 열의 값을 반환한다.

* @param row

* @param column

* @return

*/

@Override

public Object getValueAt(int row, int column) {

return values[row][column];

}

}


package jtable;

import java.awt.BorderLayout;

import javax.swing.JFrame;
import javax.swing.JTable;

import jtable.datamodel.TableVal‎ues;

public class SimpleTableTest extends JFrame {
private JTable table;
public static void main(String[] args) {
SimpleTableTest stt = new SimpleTableTest();
stt.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
stt.setLocation(400, 200);
stt.setSize(400, 300);
stt.setVisible(true);
}
/**
* 생성자
*/
public SimpleTableTest() {
setLayout(new BorderLayout()); // 레이아웃 설정 
TableVal‎ues tv = new TableVal‎ues(); // 모델 생성 
table = new JTable(tv); // 테이블 생성 
add(table);
}
}



다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
맨위로

카페 검색

카페 검색어 입력폼