首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

jTable初级有关问题

2012-01-30 
jTable初级问题问了一个没分的问题得到了两位朋友的回答我的问题是这样的JTable组件我看到的好像只有在声

jTable初级问题
问了一个没分的问题     得到了两位朋友的回答     我的问题是这样的

JTable组件   我看到的好像只有在声明的时候才能在构造方法里设置table里的数据什么的

如果我想不在实例化对象的时候就把数据加进去   而是想在实例化对象后再加数据   有什么方法?   谢谢了!

一位朋友的回答是  

扩展AbstractTableModel,然后将数据和你的TableModel挂钩,你的TableModel和JTable挂钩

我在api里看到了

                TableModel   myData   =   new   MyTableModel();  
                JTable   table   =   new   JTable(myData);
应该是你的TableModel和JTable挂钩     可是数据和TableModel挂钩   怎么实现?

哪位朋友再来回答一下?   谢谢啦!

[解决办法]
写了个简单的例子,具体是怎么工作的,你就自己看看吧

import javax.swing.table.AbstractTableModel;

public class MyTableModel extends AbstractTableModel {
private String[] columnNames = { "ID ", "Name ", "Age ", "Married "};

private Object[][] data = {
{ "P1001 ", "Wang ", "29 ", new Boolean(true) },
{ "P1002 ", "Li ", "20 ", new Boolean(false) },
{ "P1003 ", "Liu ", "24 ", new Boolean(false) },
{ "P1004 ", "Zhang ", "32 ", new Boolean(true) },
{ "P1005 ", "Wu ", "19 ", new Boolean(false) } };

public int getColumnCount() {
return columnNames.length;
}

public int getRowCount() {
return data.length;
}

public String getColumnName(int column) {
return columnNames[column];
}

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 < 2) {
return false;
} else {
return true;
}
}

public void setValueAt(Object value, int row, int col) {
data[row][col] = value;
fireTableCellUpdated(row, col);
}
}

使用如下

JTable table = new JTable(new MyTableModel());
JScrollPane scrollPane = new JScrollPane(table);
add(scrollPane, BorderLayout.Center);


在MyTableModel中的数据你可以在程序运行时赋值

热点排行