我有一个JTable,它是通过从文本文件导入数据而形成的。它是一个巨大的表,有大约522列和数千行。此表中的许多单元格也是空的。 现在,我希望能够对某些列中可用的数据应用一些数学运算。所以现在,我可以选择多个列,但我不知道如何获取这些值。我知道我需要一个数组数组,我可以存储表列中的值,然后根据我的算法修改每个值。 现在,简单地开始它,我只是希望能够打印出选择列中的值(只有一个以保持简单)但我不能这样做,我得到一个特定单元格的值打印2-4倍。我的测试代码如下: 对于选择整列,我使用此代码:
public static void selectWholeColumn(final JTable table)
{
final JTableHeader header = table.getTableHeader();
header.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent e)
{
int col = header.columnAtPoint(e.getPoint());
if(header.getCursor().getType() == Cursor.E_RESIZE_CURSOR)
{
e.consume();
}
else
{
table.setColumnSelectionAllowed(true);
table.setRowSelectionAllowed(false);
table.clearSelection();
table.setColumnSelectionInterval(col,col);
table.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
}
}
});
}
在我的GUI中,我有一个按钮,当点击它时会触发一个后端类,并且执行这个以JTable作为参数的方法来打印出所选列中所有行的值:
public void filterData(final JTable table)
{
TableModel model = table.getModel();
table.setCellSelectionEnabled(true);
table.setColumnSelectionAllowed(true);
table.setRowSelectionAllowed(false);
ListSelectionModel cellSelectionModel = table.getSelectionModel();
cellSelectionModel.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
cellSelectionModel.addListSelectionListener(new ListSelectionListener()
{
public void valueChanged(ListSelectionEvent e)
{
String selectedData = null;
int[] selectedRow = table.getSelectedRows();
int[] selectedColumns = table.getSelectedColumns();
for (int i = 0; i < selectedColumns.length; i++)
{
for (int j = 0; j < selectedRow.length; j++)
{
selectedData = (String) table.getValueAt(selectedRow[i], selectedColumns[j]);
}
}
System.out.println("Selected: " + selectedData);
}
});
有关如何打印或基本上获取所选列或列中所有行的值的任何建议,以便我可以立即修改其中的数据?
谢谢!