2013-05-02 87 views
0

我有JTable並希望從每個選定列中獲取數據。通過鼠標點擊來選擇列。所以,如果選擇了5列,輸出必須是5個字符串數組。從JTable的選定列中獲取數據的簡單方法

我試圖通過MouseListener來做到這一點,但我只能得到點擊的單元格,而不是整列。

+1

但是,如果你知道單擊的單元格,你知道它所屬的列,你不是嗎? – 2013-05-02 12:29:02

+0

是的,你說得對,但問題是我不知道如何打印選中的整個列。我對jtables沒有經驗。 – ArmMiner 2013-05-02 12:31:11

+0

請修改您的問題以包含顯示您嘗試過的內容的[sscce](http://sscce.org/);兩列和一行應該足以開始。 – trashgod 2013-05-03 11:14:51

回答

3

你需要JTable.getSelectedColumns(),但它返回選定列索引,所以你需要訪問TableModel(包javax.swing.table

int[] columns = jtable.getSelectedColumns(); 
TableModel model = jtable.getModel(); 
int rowcount = model.getRowCount(); 
String[][] output = new String[columns.length][rowcount]; 
for (int i = 0; i < columns.length; i++) 
    for (int row = 0; row < rowcount; row++){ 
     int column = jtable.convertColumnIndexToModel(columns[i]); 
     output[i][row] = model.getValueAt(row, column).toString(); 
    } 
+1

忘記將視圖座標('JTable')轉換爲模型座標('TableModel') – Robin 2013-05-02 12:58:06

+1

johnchen902:嘗試拖動列查看問題;更多關於@羅賓的觀點[這裏](http://stackoverflow.com/a/16191431/230513)。 – trashgod 2013-05-02 13:24:16

+1

只有當您不重新安排「JTable」中的列時,您的代碼纔會起作用。如果你想移動例如表的第一列到您的代碼將失敗。您需要使用'JTable#convert * IndexToModel'方法。可以在'JTable'類的javadoc類中找到一個示例 – Robin 2013-05-02 13:24:48

相關問題