JTable:如何在不显示的情况下添加数据?

时间:2010-10-07 03:11:40

标签: java jtable

我有一个图像列。我想附加一些只能读取但不能显示的附加文本信息。

我怎样才能做到这一点?我正在寻找一些“幽灵”专栏。

寻找一些方法来存储临时存储在客户端Java应用程序上的持久数据,然后将其上传到服务器。

4 个答案:

答案 0 :(得分:3)

  1. 通常使用两列数据
  2. 创建TableModel
  3. 使用TableModel
  4. 创建JTable
  5. 从JTable获取TableColumnModel
  6. 删除不希望在表格中显示的TableColumn(来自TableColumnModel)。这不会删除模型中的数据,也不会在表的视图中绘制列。
  7. 现在,当您想要引用隐藏列中的数据时,您需要从TableModel获取数据,而不是JTable:

    Object cellData = table.getModel().getValueAt(...);
    

答案 1 :(得分:2)

看看您的TableModel看起来会很有帮助,因为我们可以为您提供对您当前设计提供最小改动的想法。但是,一种解决方案是设计一个表示表中一行的自定义数据对象,并让TableModel使用它来为每列提供正确的数据,包括您当前显示的图像。

编辑:

  

基本上我有一个列表,DefaultTableModel设置为2列。我想只显示模型的第一列。

我建议您通过扩展TableModel来创建自己的AbstractTableModel。为此,您只需要实现三种方法:

public int getRowCount();
public int getColumnCount();
public Object getValueAt(int row, int column);

然后,您可以提供类似List的支持集合来保存行数据。您的getRowCount()可以返回列表的大小,getColumnCount()可以为您的图片列返回1。然后getValueAt()将从我上面提到的自定义数据对象返回图片。

答案 2 :(得分:0)

您需要扩展AbstractTableModel或DefaultTableModel类并覆盖getValueAt(row,column)和setValueAt方法。

答案 3 :(得分:0)

您使用的是自定义TableModel吗?您可以像这样覆盖getColumnCount()

@Override
public int getColumnCount() {
    return super.getColumnCount() - 1;
}

这样您的模型会隐藏最后一列,但您仍然可以使用getValueAt()

来阅读它