我有JTable
並希望從每個選定列中獲取數據。通過鼠標點擊來選擇列。所以,如果選擇了5列,輸出必須是5個字符串數組。從JTable的選定列中獲取數據的簡單方法
我試圖通過MouseListener
來做到這一點,但我只能得到點擊的單元格,而不是整列。
我有JTable
並希望從每個選定列中獲取數據。通過鼠標點擊來選擇列。所以,如果選擇了5列,輸出必須是5個字符串數組。從JTable的選定列中獲取數據的簡單方法
我試圖通過MouseListener
來做到這一點,但我只能得到點擊的單元格,而不是整列。
你需要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();
}
忘記將視圖座標('JTable')轉換爲模型座標('TableModel') – Robin 2013-05-02 12:58:06
johnchen902:嘗試拖動列查看問題;更多關於@羅賓的觀點[這裏](http://stackoverflow.com/a/16191431/230513)。 – trashgod 2013-05-02 13:24:16
只有當您不重新安排「JTable」中的列時,您的代碼纔會起作用。如果你想移動例如表的第一列到您的代碼將失敗。您需要使用'JTable#convert * IndexToModel'方法。可以在'JTable'類的javadoc類中找到一個示例 – Robin 2013-05-02 13:24:48
但是,如果你知道單擊的單元格,你知道它所屬的列,你不是嗎? – 2013-05-02 12:29:02
是的,你說得對,但問題是我不知道如何打印選中的整個列。我對jtables沒有經驗。 – ArmMiner 2013-05-02 12:31:11
請修改您的問題以包含顯示您嘗試過的內容的[sscce](http://sscce.org/);兩列和一行應該足以開始。 – trashgod 2013-05-03 11:14:51