JTable选择和TableModel

时间:2012-09-12 21:33:41

标签: java swing jtable selected tablemodel

我遇到了JTable和与之关联的TableModel的问题。这里的问题是,如果我在JTable上进行行/行选择,我想从TableModel获取特定的行对象并将其传递到某处。有谁知道如何有效地做到这一点?

2 个答案:

答案 0 :(得分:1)

假设您有自定义TableModel,您可以这样做:

@Override
public Object getValueAt(int rowIndex, int columnIndex) {
if (rowIndex >= items.size()) {
    return null;
}
Object obj = items.get(rowIndex);
if (obj == null) {
      return null;
}

switch (columnIndex){
case -1:
          return obj;
    case 0: ...

(假设items是您存储对象的List)

...然后当你需要给定行的对象时,只需调用tableModel.getValueAt(row, -1);

即可。

答案 1 :(得分:1)

我做了类似的申请。在我的任务中,我必须从一个表中获取数据(行/行)并将其拖到另一个表中。即,如果用户从一个表中选择行/行,他应该能够拖动到另一个表。

当用户选择行时使用tableA.getSelectedRow()。现在循环以获取每个选定行的所有列。将每一行存储在一个String中,并使用换行符作为行的结尾。通过字符串导入解析并获取每一行。

// Sample code that I have worked on.
protected String exportString(JComponent c) {
JTable table = (JTable) c;
rows = table.getSelectedRows();
int colCount = table.getColumnCount();
    StringBuffer buff = new StringBuffer();
for (int i = 0; i < rows.length; i++) {
     for (int j = 0; j < colCount; j++) {
          Object val = table.getValueAt(rows[i], j);
          if (j != colCount - 1) {
              buff.append(",");
          }
         }
     if (i != rows.length - 1) {
         buff.append("\n");
     }
     }
     System.out.println("Export Success");
 return buff.toString();
}

希望这可以帮助你。