Java 从表中获取值

Java 从表中获取值,java,swing,jtable,Java,Swing,Jtable,在下面的代码中,我浏览一个表并查找包含蓝色图标的列。如果是这种情况,我会计算包含蓝色图标和单词“ble”的行数 但我所做的并不是我喜欢的 for (int i = 0; i <myTable.getRowCount(); i++) { myTable.selectCell(i, 1); if (myTable.getIcon(i, 0) == ("blue.gif")) { if (myTable.getRowValue

在下面的代码中,我浏览一个表并查找包含蓝色图标的列。如果是这种情况,我会计算包含蓝色图标和单词“ble”的行数 但我所做的并不是我喜欢的

for (int i = 0; i <myTable.getRowCount(); i++)
     {
       myTable.selectCell(i, 1);
       if (myTable.getIcon(i, 0) == ("blue.gif"))
       {

        if (myTable.getRowValue(i, 0).contains("ble."))
        {
         int counter = 0;
         counter = counter + 1;
         System.out.println(counter);

        }

     }
}

for(int i=0;i这是因为在向计数器添加1之前,您将计数器重置为0,因此计数器始终显示1。

不工作,因为我认为这意味着您获得所有1?这是因为您每次在if中重置计数器:

for (...) {
    ...
    if (...) {
        int counter = 0; // you do this every time
    }
    ...
}
相反,将计数器移出循环:

int counter = 0; // only do it once, here
for (...) {
    ...
    if (...) {
        counter = counter + 1
    }
    ...
}

计数器
变量必须在
上方声明:

int counter = 0;
for (int i = 0; i <myTable.getRowCount(); i++) {
    myTable.selectCell(i, 1);
    if (myTable.getIcon(i, 0) == ("blue.gif")) {
        if (myTable.getRowValue(i, 0).contains("ble.")) {
           counter++;
           System.out.println(counter);
        }
    }
}
int计数器=0;

对于(inti=0;i既然您已经在使用'i'作为计数器变量,那么就没有必要再创建一个名为'counter'的变量

   for (int i = 0; i <myTable.getRowCount(); i++) {
        myTable.selectCell(i, 1);
        if (myTable.getIcon(i, 0) == ("blue.gif")) {
            if (myTable.getRowValue(i, 0).contains("ble.")) {
               System.out.println(i + "");
            }
        }
    }

for(int i=0;i Alexey,我尝试了您的建议,但在控制台中我没有计数器的打印:(此代码与您的代码相同,在
for
循环之前声明了
counter
。我想您必须以其他方式比较图标,或者
(“blue.gif”)
。有三个方面,1)如何将
图标/ImageIcon
放入
表格单元格
2)如何为特定的
表格列定义
3)如果存在
TableModel
TableCellRenderer
类型,请***在此论坛上查看这些主题,或者使用可运行代码编辑您的帖子,其中显示了
JTable
的所有解决方法,或者使用主题
启动一个新线程,主题是
如何将图标/图像图标
放置到
JTable
i
是迭代器通过的表的所有行。
计数器
变量用于获取满足条件的行数。