Java 获取jtable中勾选复选框的行值

Java 获取jtable中勾选复选框的行值,java,swing,checkbox,jtable,abstracttablemodel,Java,Swing,Checkbox,Jtable,Abstracttablemodel,示例场景: 标题:类别、句子、布尔值 行1:apple |这是一个apple |复选框 Row2:cat |这是一个cat |复选框 当我在第一排打勾时。它将在System.out.println()中显示“苹果”和“这是一个苹果” 如果您有很多时间,如果有代码片段,我将不胜感激。谢谢。是一个可以让您开始学习的示例: 如果getColumnClass()为列返回Boolean.class,则默认值为JCheckBox 对于AbstractTableModel,您的setValueAt()实现必

示例场景:

标题:类别、句子、布尔值

行1:apple |这是一个apple |复选框

Row2:cat |这是一个cat |复选框

当我在第一排打勾时。它将在System.out.println()中显示“苹果”和“这是一个苹果”

如果您有很多时间,如果有代码片段,我将不胜感激。谢谢。

是一个可以让您开始学习的示例:

  • 如果
    getColumnClass()
    为列返回
    Boolean.class
    ,则默认值为
    JCheckBox

  • 对于
    AbstractTableModel
    ,您的
    setValueAt()
    实现必须触发相应的事件,如图和所示

  • 添加一个
    TableModelListener
    以接收模型触发的事件,如图所示


选中复选框时,JTable get cehckbox value:-

class TableModel extends AbstractTableModel {

        Object rowData[][] = DataAccess.getSentences();
        String columnNames[] = {"Category", "Sentences", "Boolean"};

        public int getColumnCount() {
            return columnNames.length;
        }

        public String getColumnName(int column) {
            return columnNames[column];
        }

        public int getRowCount() {
            return rowData.length;
        }

        public Object getValueAt(int row, int column) {
            return rowData[row][column];
        }

        public Class getColumnClass(int column) {
            return (getValueAt(0, column).getClass());
        }

        public void setValueAt(Object value, int row, int column) {
            rowData[row][column] = value;
        }

        public boolean isCellEditable(int row, int column) {
            return (column >= 2);
        }
    }
table.getModel().addTableModelListener(新的TableModelListener()){
@凌驾
公共作废表已更改(TableModelEvent e){
对于(int i=0;i
table.getModel().addTableModelListener(new TableModelListener() {
              @Override
              public void tableChanged(TableModelEvent e) {
                   for(int i=0;i<table.getModel().getRowCount();i++)
                      {
                        if ((Boolean) table.getModel().getValueAt(i,0))
                        {  
                          System.out.println(">\t"+table.getSelectedRow());
                          break;
                        }
                     }     
                  }
        });