[英]Set hidden field values in a 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>
希望很清楚。 谢谢
备份JTable
TableModel
可以包含您喜欢的任何内容。 它可以包含像
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
对象,因此您拥有所有必需的信息。
注意:由于缺少方法,上面的代码将无法编译,.... 这只是为了说明我的意思
等效的是由List<YourObject>
支持的AbstractTableModel
子类实例。 编辑行时,从表中获取所选行的索引( JTable.getSelectedRow()
),然后将此行索引转换为模型行索引( JTable. convertRowIndexToModel()
),然后询问模型此行中的YourObject
,您可以直接从对象获取YourObject
的ID。
阅读JTable教程以获取更多详细信息。
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);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.