Java 修改JTable中的整个列
我有一个JTable,它是通过从文本文件导入数据形成的。这是一个巨大的表,大约有522列和数千行。此表中的许多单元格也是空的。 现在,我希望能够对某些列中可用的数据应用一些数学运算。现在,我可以选择多个列,但我不知道如何获取这些值。我知道我需要一个数组数组,在这里我可以存储表列中的值,然后根据我的算法修改每个值。 现在,简单地说,我只想能够打印出select列中的值(只打印一个以保持简单),但我做不到,我会将特定单元格的值打印2-4次。我的测试代码如下: 对于整个选择列,我使用以下代码:Java 修改JTable中的整个列,java,swing,jtable,mouselistener,listselectionlistener,Java,Swing,Jtable,Mouselistener,Listselectionlistener,我有一个JTable,它是通过从文本文件导入数据形成的。这是一个巨大的表,大约有522列和数千行。此表中的许多单元格也是空的。 现在,我希望能够对某些列中可用的数据应用一些数学运算。现在,我可以选择多个列,但我不知道如何获取这些值。我知道我需要一个数组数组,在这里我可以存储表列中的值,然后根据我的算法修改每个值。 现在,简单地说,我只想能够打印出select列中的值(只打印一个以保持简单),但我做不到,我会将特定单元格的值打印2-4次。我的测试代码如下: 对于整个选择列,我使用以下代码: pub
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);
}
});
public void filterData(最终JTable表)
{
TableModel模型=table.getModel();
table.setCellSelectionEnabled(真);
table.setColumnSelectionAllowed(真);
table.setRowSelectionAllowed(false);
ListSelectionModel cellSelectionModel=table.getSelectionModel();
cellSelectionModel.setSelectionMode(ListSelectionModel.MULTIPLE\u INTERVAL\u SELECTION);
cellSelectionModel.addListSelectionListener(新建ListSelectionListener())
{
public void值已更改(ListSelectionEvent e)
{
字符串selectedData=null;
int[]selectedRow=table.getSelectedRows();
int[]selectedColumns=table.getSelectedColumns();
for(int i=0;i
关于如何打印或基本获取所选列中所有行的值,以便立即修改其中的数据,有什么建议吗
谢谢!在
表格模型中循环,并在列表选择监听器中使用getValueAt()
是一种合理的方法,尽管每次更改都会调用监听器。您不清楚哪里出了问题;您可以
- 使用
StringBuilder
连接选定的值
- 将所选值累加到
列表中
- 在
表格模型
中保留所选内容,如使用设置
所示
- 在
TableCellRenderer
的ItemHandler
中的选择上进行操作,如图所示