Java 如何从jtable中的复选框中获取选中值?

Java 如何从jtable中的复选框中获取选中值?,java,swing,jdbc,jtable,jcheckbox,Java,Swing,Jdbc,Jtable,Jcheckbox,我有一个名为“tableEarnings”的JTable,它由3列组成: 检查 收益 描述 和 钮扣 “检查”列中的每个单元格都有一个复选框。我需要从JTable获取“收入”和“描述”单元格的检查值,并在单击jButton时将其存储到数据库中 请帮帮我 这是我的按钮侦听器代码: private void btnOKActionPerformed(java.awt.event.ActionEvent evt) { //System.out.println("table"+tableEa

我有一个名为“tableEarnings”的JTable,它由3列组成:

  • 检查
  • 收益
  • 描述 和
  • 钮扣
“检查”列中的每个单元格都有一个复选框。我需要从
JTable
获取“收入”和“描述”单元格的检查值,并在单击
jButton
时将其存储到数据库中 请帮帮我

这是我的按钮侦听器代码:

private void btnOKActionPerformed(java.awt.event.ActionEvent evt) {
    //System.out.println("table"+tableEarnings.getModel().getRowCount());
    for (int i = 0; i < tableEarnings.getModel().getRowCount()+1; i++) {    
        if ((Boolean) tableEarnings.getModel().getValueAt(i, 0)) {
           System.out.println("Value" + tableEarnings.getValueAt(i, 1));
           break;
        }
    }
}
private void btnOKActionPerformed(java.awt.event.ActionEvent evt){
//System.out.println(“表”+表earnings.getModel().getRowCount());
对于(int i=0;i
在迭代表模型的循环中有三个简单错误:

  • i
    变量的上限应为行计数-1。否则,您可能会得到一个异常(即:
    ArrayIndexOutOfBoundsException
    ,如果您的表模型是
    DefaultTableModel

  • 如果发现
    true
    布尔值,则不要
    中断循环。这样做会丢失比
    i
    索引更多的所有行

  • 您直接在表(视图)而不是模型上打印调用
    getValueAt()
    的值。如果表已排序或列已重新排序,则可能无法检索正确的值。始终保持一致性。在这种情况下,您应该使用模型

  • 例如:

    private void btnOKActionPerformed(java.awt.event.ActionEvent evt) {
        TableModel model = tableEarnings.getModel();
        for (int i = 0; i < model.getRowCount() - 1; i++) {    
            if ((Boolean) model.getValueAt(i, 0)) {
               System.out.println("Value" + model.getValueAt(i, 1));
            }
        }
    }
    
    private void btnOKActionPerformed(java.awt.event.ActionEvent evt){
    TableModel model=tableEarnings.getModel();
    对于(inti=0;i
    现在您可以打印这些值了


    如果一切顺利,现在就可以在数据库中插入行了。但是请注意,数据库调用是一项耗时的任务,可能会阻塞数据库,从而导致GUI无响应。EDT是一个单独的特殊线程,Swing组件在其中创建和更新。为了避免阻塞,该线程考虑使用A在后台线程中执行数据库调用,并更新EDT中的Swing组件。请参阅第一课中的详细信息。

    在迭代表模型的循环中有三个简单错误:

  • i
    变量的上限应为行计数-1。否则,您可能会得到一个异常(即:
    ArrayIndexOutOfBoundsException
    ,如果您的表模型是
    DefaultTableModel

  • 如果发现
    true
    布尔值,则不要
    中断循环。这样做会丢失比
    i
    索引更多的所有行

  • 您直接在表(视图)而不是模型上打印调用
    getValueAt()
    的值。如果表已排序或列已重新排序,则可能无法检索正确的值。始终保持一致性。在这种情况下,您应该使用模型

  • 例如:

    private void btnOKActionPerformed(java.awt.event.ActionEvent evt) {
        TableModel model = tableEarnings.getModel();
        for (int i = 0; i < model.getRowCount() - 1; i++) {    
            if ((Boolean) model.getValueAt(i, 0)) {
               System.out.println("Value" + model.getValueAt(i, 1));
            }
        }
    }
    
    private void btnOKActionPerformed(java.awt.event.ActionEvent evt){
    TableModel model=tableEarnings.getModel();
    对于(inti=0;i
    现在您可以打印这些值了


    如果一切顺利,现在就可以在数据库中插入行了。但是请注意,数据库调用是一项耗时的任务,可能会阻塞数据库,从而导致GUI无响应。EDT是一个单独的特殊线程,Swing组件在其中创建和更新。为了避免阻塞,该线程考虑使用A在后台线程中执行数据库调用,并更新EDT中的Swing组件。请参阅第一课中的详细信息。

    在迭代表模型的循环中有三个简单错误:

  • i
    变量的上限应为行计数-1。否则,您可能会得到一个异常(即:
    ArrayIndexOutOfBoundsException
    ,如果您的表模型是
    DefaultTableModel

  • 如果发现
    true
    布尔值,则不要
    中断循环。这样做会丢失比
    i
    索引更多的所有行

  • 您直接在表(视图)而不是模型上打印调用
    getValueAt()
    的值。如果表已排序或列已重新排序,则可能无法检索正确的值。始终保持一致性。在这种情况下,您应该使用模型

  • 例如:

    private void btnOKActionPerformed(java.awt.event.ActionEvent evt) {
        TableModel model = tableEarnings.getModel();
        for (int i = 0; i < model.getRowCount() - 1; i++) {    
            if ((Boolean) model.getValueAt(i, 0)) {
               System.out.println("Value" + model.getValueAt(i, 1));
            }
        }
    }
    
    private void btnOKActionPerformed(java.awt.event.ActionEvent evt){
    TableModel model=tableEarnings.getModel();
    对于(inti=0;i
    现在您可以打印这些值了


    如果一切顺利,现在就可以在数据库中插入行了。但是请注意,数据库调用是一项耗时的任务,可能会阻塞数据库,从而导致GUI无响应。EDT是一个单独的特殊线程,Swing组件在其中创建和更新。为了避免阻塞,该线程考虑使用A在后台线程中执行数据库调用,并更新EDT中的Swing组件。请参阅第一课中的详细信息。

    在迭代表模型的循环中有三个简单错误:

  • i
    变量的上限应为行计数-1。否则,如果表模型为