2011-03-30 45 views

回答

4

表中没有“row”对象,因此没有getRow方法可以得到的东西。

您可以询问getValueAt()以获取单个值,将其用于每列,并且您有完整的行。

3

AFAIK,没有这样的方法。如果你要尊重用户的列顺序重新排列使用table.getValueAt() -

public String[] getRowAt(int row) { 
    String[] result = new String[colNumber]; 

    for (int i = 0; i < colNumber; i++) { 
     result[i] = table.getModel().getValueAt(row, col); 
    } 

    return result; 
} 

P.S:写类似的东西。

1

我建议根据POJO列表创建一个TableModel。

它是那么容易添加的方法,如:

MyPojo getData(int index); 

看一看这个示例中,我写了前一段时间的起点: http://puces-samples.svn.sourceforge.net/viewvc/puces-samples/tags/sessionstate-1.0/sessionstate-suite/sessionstate-sample/src/blogspot/puce/sessionstate/sample/ParticipantTableModel.java?revision=13&view=markup

+0

我完全同意。 – MeBigFatGuy 2011-03-30 12:58:34

+0

在我看来,你应该避免使用DefaultTableModel,因为它几乎总是与你放在模型中的预先存在的数据的结构无关。 Sun将它添加到sdk中是错误的,imo。 – MeBigFatGuy 2011-03-30 13:07:14

1

尝试是这样的

private void getIndexRow(){ 
    int i; 
    int row = 0; 
    int column = 0; 
    i=Integer.parseInt(myTable.getValueAt(row,column).toString()); 
} 
0

另一种方法是使用表模型的getDataVector()方法。

DefaultTableModel tm = (DefaultTableModel) table.getModel(); 
Vector<Object> rowData = tm.getDataVector().elementAt(rowIndex); 
+0

可能,但没有你应该想做的事:如果模型不是DefaultTableModel类型(你需要在你的代码片段中进行强制转换),反正无效。传递一部分原始的,未知的基础数据结构会要求麻烦,因为代码可能会意外地改变其内容,从而违反了模型通知其听众更改的合同 – kleopatra 2013-04-21 08:10:01

+0

好点。这可能是有人想要做的。我给答案添加了一个表演。 – 2013-05-11 19:59:17

0
private void jTable1MousePressed(java.awt.event.MouseEvent evt) {          

    int selectedRow; 

    ListSelectionModel rowSM = jTable1.getSelectionModel(); 

     rowSM.addListSelectionListener(new ListSelectionListener() 
     { 
     @Override 
     public void valueChanged(ListSelectionEvent e) 
     { 
      ListSelectionModel lsm = (ListSelectionModel) e.getSource(); 

      selectedRow = lsm.getMinSelectionIndex(); 

      int numCols = jTable1.getColumnCount(); 

      model = (DefaultTableModel) jTable1.getModel(); 

      System.out.print(" \n row " + selectedRow + ":"); 

      for (int j = 0; j < numCols; j++) 
      { 
       System.out.print(" " + model.getValueAt(selectedRow, j)); 
      } 

     } 
    }); 
} 

使用这个你可以得到整行的值,其中u点击特定行。

0

这个功能对我来说很好。

private Object[] getRowAt(int row, DefaultTableModel model) { 
    Object[] result = new Object[model.getColumnCount()]; 

    for (int i = 0; i < model.getColumnCount(); i++) { 
     result[i] = model.getValueAt(row, i); 
    } 

    return result; 
}