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()将是“苹果”和“这是一个苹果。”
如果你有足够的时间,我会很感激,如果有一个代码片段。谢谢。
答案 0 :(得分:1)
CheckABunch
是一个可以帮助您入门的示例:
如果getColumnClass()
为某列返回Boolean.class
,则默认renderer and editor将为JCheckBox
。
对于AbstractTableModel
,您setValueAt()
的实施必须触发相应的事件,如here和here所示。
添加TableModelListener
以接收模型触发的事件,如here所示。
答案 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;
}
}
}
});