Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取JTable中所有选定行的单元格值_Java_Swing_Jtable - Fatal编程技术网

Java 获取JTable中所有选定行的单元格值

Java 获取JTable中所有选定行的单元格值,java,swing,jtable,Java,Swing,Jtable,我试图弄清楚如何遍历JTable的行并获取单元格值。如果选择了行(可以选择多行),将值传递给方法,然后继续迭代。表行包含用户输入的值。行被添加到表中,当用户输入每个条目时,表在UI中逐个显示。这些条目由一个整数和两个双精度组成。int表示该类型,两个double被添加到该类型的两个运行计数(数量和体积)中,以便在应用程序的其他地方使用。如果用户选择一行(或多行)并按Delete键,则这些行将从表中删除。删除行的值也需要从运行计数中扣除。为了删除行,我将所选行分配给一个数组,并遍历该数组以删除每一

我试图弄清楚如何遍历JTable的行并获取单元格值。如果选择了行(可以选择多行),将值传递给方法,然后继续迭代。表行包含用户输入的值。行被添加到表中,当用户输入每个条目时,表在UI中逐个显示。这些条目由一个整数和两个双精度组成。int表示该类型,两个double被添加到该类型的两个运行计数(数量和体积)中,以便在应用程序的其他地方使用。如果用户选择一行(或多行)并按Delete键,则这些行将从表中删除。删除行的值也需要从运行计数中扣除。为了删除行,我将所选行分配给一个数组,并遍历该数组以删除每一行

int[] selectedRows = entryTable.getSelectedRows();
if (selectedRows.length > 0) {
   for(int i = selectedRows.length - 1; i >= 0; i--) {
      entryTable.removeRow(selectedRows[i]); } }

如果有可能在这个迭代过程中获得单元格值,那将是理想的,但是经过广泛的搜索,我还没有找到这样做的方法。只要最终结果相同,任何其他方法都可以。任何关于实现这一目标的最有效方法的想法都将不胜感激。

您可以这样尝试。


你可以这样试试。


当你删除一行时,所有的索引都会改变…我会,首先统计所选行的总数,这可以在一步中扣除,然后,我会,以相反的顺序,删除这些行…你需要获得所选原始的单元格值吗?当你删除一行时,所有的索引都会改变…我会,首先统计所选行的总数,这可以在一个步骤中扣除,然后,以相反的顺序删除行…您需要获得所选原始数据的单元格值吗?
public void myMethod(JTable entryTable) {
    DefaultTableModel model = (DefaultTableModel) entryTable.getModel();
    if (entryTable.getRowCount() > 0) {
        if (entryTable.getSelectedRowCount() > 0) {
            int selectedRow[] = entryTable.getSelectedRows();
            for (int i : selectedRow) {
                int id = Integer.parseInt(entryTable.getValueAt(i, 0).toString());
                double val1 = Double.parseDouble(entryTable.getValueAt(i, 1).toString());
                double val2 = Double.parseDouble(entryTable.getValueAt(i, 2).toString());
                model.removeRow(i);
            }
        }
    }
}