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

时间:2012-11-19 18:33:45

标签: java swing checkbox jtable abstracttablemodel

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);
        }
    }

示例场景:

标题:类别,句子,布尔

Row1:apple |这是一个苹果|复选框

第2行:猫|这是一只猫|复选框

当我勾选第一行时。 System.out.println()将是“苹果”和“这是一个苹果。”

如果你有足够的时间,我会很感激,如果有一个代码片段。谢谢。

2 个答案:

答案 0 :(得分:1)

CheckABunch是一个可以帮助您入门的示例:

  • 如果getColumnClass()为某列返回Boolean.class,则默认renderer and editor将为JCheckBox

  • 对于AbstractTableModel,您setValueAt()的实施必须触发相应的事件,如herehere所示。

  • 添加TableModelListener以接收模型触发的事件,如here所示。

image

答案 1 :(得分:1)

选中复选框后,

JTable get复选框值: -

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;
                        }
                     }     
                  }
        });