2011-03-30 77 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; 
}