在java swing Jtable中设置隐藏字段值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在java swing Jtable中设置隐藏字段值相关的知识,希望对你有一定的参考价值。

我用数据库中的一些数据创建了一个swing jtable。在网络应用程序中,通常我将数据显示给用户并将其唯一的数据库ID设置为html标记属性,这样当用户点击说编辑时,我使用javascript从html标记属性中选择元素的隐藏数据库唯一ID 。这样,我知道用户想要编辑哪些数据,我可以使用它唯一的主键在数据库中更新它。现在我如何在使用swing的java中编写的桌面应用程序中执行此操作。说得更清楚,我正在寻找相当于;

<table>
<tr id=1 ><td>david</td></tr>
<tr id=2 ><td>peter</td></tr>
<tr id=3 ><td>Timothy</td></tr>
</table>

希望很清楚。谢谢

答案

你支持TableModelJTable可以包含任何你喜欢的东西。它可以包含像

class User{
  public final int ID;
  public String name;
  public int age;
}

然后您可以选择仅在JTable中包含某些值

class MyTableModel implements TableModel{
  private List<User> users;
  @Override
  public Object getValueAt(int row, int column){
    if ( column == 0 ){
      return users.get( row ).name;
    }
  }
}

但由于您的TableModel仍然包含完整的User对象,因此您拥有所有必需的信息。

注意:由于缺少方法,上面的代码将无法编译,....这只是为了说明我的意思

另一答案

等效的是由AbstractTableModel支持的List<YourObject>子类实例。编辑行时,从表中获取所选行的索引(JTable.getSelectedRow()),然后将此行索引转换为模型行索引(JTable. convertRowIndexToModel()),然后在此行询问模型中的YourObject,然后直接从对象获取YourObject的ID。

阅读JTable tutorial了解更多详情。

public class UserTableModel extends AbstractTableModel {

    private List<User> users;

    public UserTableModel(List<User> users) {
        this.users = new ArrayList<User>(users);
    }

    @Override
    public int getRowCount() {
        return users.size();
    }

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

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        if (columnIndex == 0) {
            return users.get(rowIndex).getName();
        }
        else {
            throw new IllegalArgumentException();
        }
    }

    @Override
    public Class<?> getColumnClass(int columnIndex) {
        if (columnIndex == 0) {
            return String.class;
        }
        else {
            throw new IllegalArgumentException();
        }
    }

    public User getUserAtRow(int rowIndex) {
        return users.get(rowIndex);
    }
}

以上是关于在java swing Jtable中设置隐藏字段值的主要内容,如果未能解决你的问题,请参考以下文章

Swing Jtable 添加checkbox列

java的table里怎么加checkbox

如何完全擦除 Java Swing JTable 列及其数据?

Java在窗口中设置背景图片

如何在 Java Swing 中的 JLabel 中设置行距/高度?

如何在 JTable/JXTable 中设置列​​宽?