Java 如何在jtable中动态设置jcheckbox
在本图中,返回表标题值显示在复选框中 这里jtable来自数据库的值 我试过了,但是由于布尔值转换为字符串,发生了classcastexception 我不知道为什么会发生那个错误 这是我的密码Java 如何在jtable中动态设置jcheckbox,java,swing,jtable,jcheckbox,defaulttablemodel,Java,Swing,Jtable,Jcheckbox,Defaulttablemodel,在本图中,返回表标题值显示在复选框中 这里jtable来自数据库的值 我试过了,但是由于布尔值转换为字符串,发生了classcastexception 我不知道为什么会发生那个错误 这是我的密码 static Object[][] data; String[] colName = {"Book", "Member", "Issue Date", "Return Date ", "Remark","Return" }; List<Issue>issues=Se
static Object[][] data;
String[] colName = {"Book", "Member", "Issue Date", "Return Date ",
"Remark","Return" };
List<Issue>issues=ServiceFactory.getIssueServiceImpl().findAllIssue();
data=new Object[issues.size()][6];
for(Issue issue:issues){
data[i][0]=issue.getMemberId().getName();
data[i][1]=issue.getBookId().getName();
data[i][2]=issue.getIssueDate();
data[i][3]=issue.getReturnDate();
data[i][4]=issue.getRemark();
data[i][5]=issue.getStatus();
i++;
}
如果你知道这一点,请在这里分享答案
编辑
您需要的是为JTable的单元格使用单元格编辑器。您可以对列使用DefaultCellEditor,并使用将JTextField作为输入参数的构造函数 例如,如果表的第2列需要是文本字段,则可以执行以下操作:
TableColumn col2 = returnTable.getColumnModel().getColumn(1);
col2.setCellEditor(new DefaultCellEditor(new JTextField()));
请详细解释
希望这有帮助。从您的示例和代码来看,我觉得这是错误的
DefaultTableModel dtm = new DefaultTableModel(data, colName);{
public Class getColumnClass(int c) {
switch (c) {
case 0: return Boolean.class;
default: return String.class;
}
}
};
不是第0列的书。。。或者更重要的是,issue.getMemberId.getName
不应该是
DefaultTableModel dtm = new DefaultTableModel(data, colName);{
public Class getColumnClass(int c) {
return c == 5 ? Boolean.class : String.class
}
};
第5列返回的位置?您需要实现表格单元格渲染器。您应该为JTable提供自定义单元格渲染器。请在issue.getStatus返回什么内容中查看ColorRenderer类?字符串还是布尔值?@MadProgrammer issue.getStatus是一个布尔值那么TableModel的getColumnClass方法为列返回了错误的类类型。。。
DefaultTableModel dtm = new DefaultTableModel(data, colName);{
public Class getColumnClass(int c) {
switch (c) {
case 0: return Boolean.class;
default: return String.class;
}
}
};
DefaultTableModel dtm = new DefaultTableModel(data, colName);{
public Class getColumnClass(int c) {
return c == 5 ? Boolean.class : String.class
}
};