我使用以下代码生成一个包含三列和三行的表,第一列包含复选框,第二列只包含单词:row i,其中i对应于行号。
private void loadTable {
int rowCount = 3;
Boolean [] boolArray = new Boolean[3];
for(int y=0;y<3;y++)
boolArray[y]=false;
int columnCount = 2;
Object data[] = new Object [rowCount];
for(int y=1;y<=3;y++)
data[y-1]="row "+y;
mainModel = new DefaultTableModel();
mainModel.addColumn("", boolArray);
mainModel.addColumn("", data);
jScrollPane1.getViewport().add(tableOne, null);
aTableClass.setModel(mainModel);
}
class ATableClass extends JTable {
public Class getColumnClass(int column) {
try {
if (column == 0) {
return Class.forName("java.lang.Boolean");
}
return Class.forName("java.lang.Object");
}
catch (ClassNotFoundException ex) {
ex.printStackTrace();
return null;
}
}
}
如何将actionlisteners添加到此表中生成的复选框?
答案 0 :(得分:3)
您必须定义自定义单元格表格渲染器和编辑器,并将动作侦听器添加到渲染的组件。 看看这个thread。 这example对我非常有帮助。
简而言之,你必须:
TableCellRenderer
界面(定义列的呈现方式)TableCellEditor
界面(定义列的编辑方式)JTable
添加所需的渲染器和编辑器(setDefaultRenderer,setDefaultEditor)