Java:JTable如何重新指定行数据

已经指定行数据和列首名来新建了一个JTable组件,后来响应事件需要重新指定一个两维数组来作为它的行数据,列首名可以不变,用哪个方法?在API中没找到,需要定义表格模型吗... 已经指定行数据和列首名来新建了一个JTable组件,后来响应事件需要重新指定一个两维数组来作为它的行数据,列首名可以不变,用哪个方法?在API中没找到,需要定义表格模型吗?还是?
DefaultTableModel有这样功能的方法吗?没找到。。。
展开
 我来答
百度网友6d408b6
2007-09-11 · TA获得超过1726个赞
知道小有建树答主
回答量:402
采纳率:0%
帮助的人:478万
展开全部
替楼上的补充:一般符合MVC pattern构建的Table都是其TableModel的一个listener,所以model里内容改变后只要通知作为view的table。

目前版本的javax.swing.table.TableModel接口只有获取其listener的接口,没有规范具体通知的接口,但在AbstractTableModel类里就实现了如下通知接口:

public void fireTableChanged(TableModelEvent e);
public void fireTableStructureChanged();
public void fireTableRowsUpdated(int firstRow, int lastRow);
public void fireTableRowsInserted(int firstRow, int lastRow);
public void fireTableRowsDeleted(int firstRow, int lastRow);
public void fireTableCellUpdated(int row, int column);
public void fireTableDataChanged();

在作为TableModel的listner,JTable是实现了TableModelListener中定义的接受和处理来自model通知的接口的,就是
public void tableChanged(TableModelEvent e); 事实上AbstractTableModel上述的几个通知方法内部实现中都回调用其listener的这个方法。

根据你的情况,在重新设定二维表后,该tablemodel可以fire相应的消息,比如若连column数目都变掉的话,则调用最彻底的fireTableStructureChanged,但相应计算开销会大。 如果没有model view分得那么清,那么直接相当于从cotroller调用view的tablechange(...)方法也是可以的。

需要注意的是JTable的tablechange()的实现虽然一般情况下是够用了,但有时候需要重载自己写。比如若table的column不是根据tablemodel自动生成的,而是自己修改过了columnmodel,即JTable的autoCreateColumnsFromModel为false,那么当model的column增加的时候,JTable的实现不会自动显示增加的那个列,需要重载自己写。
println
2007-09-10 · TA获得超过191个赞
知道小有建树答主
回答量:165
采纳率:0%
帮助的人:215万
展开全部
DefaultTableModel是TableModel的子类,你先创建一个DefaultTableModel实例,它是存储Jtable数据的信息的,可以通过它对table的数据进行操作,好像这是一个设计模式中适配器模式,然后通过JTable(TableModel dm)或其他相关的构造函数创建JTable,然后通过DefaultTableModel就可以对数据进行操作了,操作之后刷新JTable组件就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式