글쓴이 :이종대 1999년 8월 10일 16:02:59
In Reply to: JTable 사용법에 대해.... posted by 이준규 on 1999년 8월 10일 15:36:12:
이건 제가 예전에 했던 프로그램인데
Sun의 자바 튜토리얼에 있는 내용을 수정한 것입니다
import javax.swing.*;
import javax.swing.table.*;
/**
* Description : TableModel SubClass
* @see : DataDown
* @version : 1.0
* @auther : LJD
*/
class ListTableModel extends AbstractTableModel {
private String[] columnNames;
private Object[][] data;
public int getColumnCount() {
return columnNames.length;
}
public int getRowCount() {
return data.length;
}
public String getColumnName(int col) {
return columnNames[col];
}
public Object getValueAt(int row, int col) {
return data[row][col];
}
public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
public boolean isCellEditable(int row, int col) {
if (col > 1) {
return false;
} else {
return true;
}
}
public void setColumnNames(String[] clsColNames) {
columnNames = clsColNames;
}
public void setDatas(Object[][] clsData) {
data = clsData;
}
public void setValueAt(Object value, int row, int col) {
if (data[0][col] instanceof Integer) {
try {
data[row][col] = new Integer((String)value);
} catch (NumberFormatException e) {
System.err.println("User attempted to enter non-integer"
+ " value (" + value
+ ") into an integer-only column.");
}
} else {
data[row][col] = value;
}
}
}
위와같은 클래스를 만들고 main에서
try {
jtabDocList = new JTable();
jtabDocList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
jtabDocList.setCellSelectionEnabled(true);
jtabDocList.setColumnSelectionAllowed(true);
jtabDocList.setName("DocList");
jtabDocList.setShowGrid(false);
jtabDocList.sizeColumnsToFit(JTable.AUTO_RESIZE_ALL_COLUMNS);
} catch (java.lang.Throwable ivjExc) {
handleException(ivjExc);
}
clsColNames라는 배열에 column의 title들을 저장하고
clsData라는 배열에는 실제 data를 저장하고
ListTableModel myModel = new ListTableModel();
myModel.setDatas(clsData);
myModel.setColumnNames(clsColNames);
getDocList().setModel(myModel);
getDocList().updateUI();
위와같이 작성하면 JTable가 완성되어 화면에 나오게 됩니다
도움이 됐기를...