我有一个 JTable,它使用自定义 TableModel 来显示一系列对象实例。 getValueAt(int row, int column)
内部有一个 switch case,用于根据给定属性返回值(见下文)。一个 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();
}
}
最佳答案
default renderer and editor for Boolean
是一个JCheckBox
。考虑使用
case ACTIVATED_INDEX:
return Boolean.valueOf(user.getActivated());
或者,
case ACTIVATED_INDEX:
return (user.getActivated())?"1":"0";
附录:例如,DefaultTableModel
不会覆盖 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);
关于java - 编辑单元格时切换值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3305145/