Java 如何在JTable中选中多个复选框?
所以我有一张桌子:Java 如何在JTable中选中多个复选框?,java,mysql,swing,jtable,jcheckbox,Java,Mysql,Swing,Jtable,Jcheckbox,所以我有一张桌子: table = new JTable(); 哪些模型是我的模型:table.setModel(model) 里面有一个叫做CheckColumn的列,它只有复选框 问题是,如果我选中一个复选框,它会选中它,如果我想选中另一个复选框,它会删除上一个复选框。因此,它只允许我选中一个复选框 对于复选框,我使用以下选项: table.getColumnModel().getColumn(15).setCellEditor(new CheckBoxCellEditor()); tab
table = new JTable();
哪些模型是我的模型:table.setModel(model)代码>
里面有一个叫做CheckColumn的列,它只有复选框
问题是,如果我选中一个复选框,它会选中它,如果我想选中另一个复选框,它会删除上一个复选框。因此,它只允许我选中一个复选框
对于复选框,我使用以下选项:
table.getColumnModel().getColumn(15).setCellEditor(new CheckBoxCellEditor());
table.getColumnModel().getColumn(15).setCellRenderer(new CWCheckBoxRenderer());
从课程中:
class CheckBoxCellEditor extends AbstractCellEditor implements TableCellEditor {
private static final long serialVersionUID = 1L;
protected JCheckBox checkBox;
public CheckBoxCellEditor() {
checkBox = new JCheckBox();
checkBox.setHorizontalAlignment(SwingConstants.CENTER);
checkBox.setBackground(Color.white);
}
public Component getTableCellEditorComponent(
JTable table,
Object value,
boolean isSelected,
int row,
int column) {
checkBox.setSelected(((Boolean) value).booleanValue());
Component c = table.getDefaultRenderer(String.class).getTableCellRendererComponent(table, value, isSelected, false, row, column);
if (c != null) {
checkBox.setBackground(c.getBackground());
}
return checkBox;
}
public Object getCellEditorValue() {
return Boolean.valueOf(checkBox.isSelected());
}
}
以及:
我希望能够检查多行。有人能告诉我怎么做吗?代码中是否有需要修改的内容,或者我需要一种新的方法
这是模型外观的摘要:
private static final int CheckCol = 15;
private List<Clients> clients;
public boolean isCellEditable(int row, int col){
if(col == 15){
return true;
}
return false;
}
public void setValueAt(Object value, int row, int col) {
//if(col==15) (not sure what to do in here)
//fireTableCellUpdated(row, col);
}
public Object getValueAt(int row, int col) {
Clients tempClient = clients.get(row);
switch (col) {
case CheckCol:
return false; //my CheckColumn type is Boolean
default:
return false;
}
}
private static final int CheckCol=15;
私人名单客户;
公共布尔值可编辑(int行,int列){
如果(列==15){
返回true;
}
返回false;
}
public void setValueAt(对象值、整行、整列){
//if(col==15)(不确定在这里做什么)
//FireTableCell更新(行、列);
}
公共对象getValueAt(整数行,整数列){
Clients tempClient=Clients.get(行);
开关(col){
案例检查:
return false;//我的CheckColumn类型为Boolean
违约:
返回false;
}
}
我已经想尽一切办法来改变模型……有人能告诉我模型应该是什么样子吗?我需要从mysql服务器获取数据,但我不知道如何对复选框列建模
提前谢谢 有存储结果的模型吗?你是什么意思?复选框的结果是什么?是的。当编辑器被关闭时,是否会通知模型(通过setValueAt方法),是否会在内部存储该值,以便通过getValueAt方法返回该值对不起,我是新手。应该是这样的:objectstatus=table.getModel().getValueAt(第15行);
table.getModel().setValueAt(值,行,15)代码>或如何?15是复选框列的编号。不,它应该自动完成。您的TableModel
是如何实现的
private static final int CheckCol = 15;
private List<Clients> clients;
public boolean isCellEditable(int row, int col){
if(col == 15){
return true;
}
return false;
}
public void setValueAt(Object value, int row, int col) {
//if(col==15) (not sure what to do in here)
//fireTableCellUpdated(row, col);
}
public Object getValueAt(int row, int col) {
Clients tempClient = clients.get(row);
switch (col) {
case CheckCol:
return false; //my CheckColumn type is Boolean
default:
return false;
}
}