Java 编辑单元格时切换值
我有一个JTable,它使用一个定制的TableModel来显示一系列对象实例。Java 编辑单元格时切换值,java,swing,jtable,editing,Java,Swing,Jtable,Editing,我有一个JTable,它使用一个定制的TableModel来显示一系列对象实例。getValueAt(int row,int column)中有一个开关,用于根据给定属性返回值(见下文)。一个return语句涉及将1/0的值返回为true/false 有没有办法修改此TableModel,使其在编辑单元格时显示1/0 public Object getValueAt(int row, int column) { User user = (User)dataVector.get(row);
getValueAt(int row,int column)
中有一个开关,用于根据给定属性返回值(见下文)。一个return语句涉及将1/0的值返回为true/false
有没有办法修改此TableModel,使其在编辑单元格时显示1/0
public Object getValueAt(int row, int column) {
User user = (User)dataVector.get(row);
switch (column) {
case ID_INDEX:
return user.getId();
case USERNAME_INDEX:
return user.getUserName();
case PASSWORD_INDEX:
return "****";
case ACTIVATED_INDEX:
return (user.getActivated())?"true":"false";
default:
return new Object();
}
}
这是一个JCheckBox
。考虑使用
case ACTIVATED_INDEX:
return Boolean.valueOf(user.getActivated());
或者
case ACTIVATED_INDEX:
return (user.getActivated())?"1":"0";
附录:例如,不重写getColumnClass()
,而AbstractTableModel
只返回Object.class
。您的TableModel
应该相应地覆盖getColumnClass()
:
DefaultTableModel dtm = new DefaultTableModel() {
@Override
public Class<?> getColumnClass(int col) {
return getValueAt(0, col).getClass();
}
};
// add some data
JTable table = new JTable(dtm);
DefaultTableModel dtm=新的DefaultTableModel(){
@凌驾
公共类getColumnClass(int-col){
返回getValueAt(0,col).getClass();
}
};
//添加一些数据
JTable table=新的JTable(dtm);
您需要查看以下内容:
TableCellRenderer
负责在未编辑单元格数据时渲染单元格数据,其中作为TableCellEditor
负责提供用于编辑单元格值的组件。因此,可以使用两种不同的方式表示数据,具体取决于数据是按法线进行编辑还是仅按法线进行渲染
您应该考虑,如果从GETValueAtE()方法返回布尔类型,则JTALE应该自动呈现JCuffCox,当单元格处于编辑模式时,可以像往常一样点击JCHIXBOX值来更改它。要执行此操作,请返回:
case ACTIVATED_INDEX:
return Boolean.valueOf(user.getActivated());
链接已更新并更改为
TableCellRenderer和TableCellEditor`。谢谢。我使用的TableModel似乎生成了一个简单的字符串,而不是JCheckBox。从链接上看,所使用的渲染器似乎取决于getColumnClass()
@James P.)的结果:是的,我已经在上面详细阐述了。