2013-05-02 43 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

相关问题