在java中向TableModel添加双值
我使用在java中向TableModel添加双值,java,swing,double,abstracttablemodel,Java,Swing,Double,Abstracttablemodel,我使用AbstractTableModel编写了一个表模型,如下所示 class DataTableModel extends AbstractTableModel { /** The table. */ private DataTable table; /** The Constant LOGGER. */ static final Logger LOGGER = Logger.getLogger(DataTableModel.class); /*
AbstractTableModel
编写了一个表模型,如下所示
class DataTableModel extends AbstractTableModel {
/** The table. */
private DataTable table;
/** The Constant LOGGER. */
static final Logger LOGGER = Logger.getLogger(DataTableModel.class);
/**
* Instantiates a new data table model.
*
* @param ptable
* the table
*/
public DataTableModel(final DataTable ptable) {
this.table = ptable;
}
/**
* Adds table model listener.
*
* @param arg0
* the arg0
*/
@Override
public void addTableModelListener(final TableModelListener arg0) {
}
/**
* Gets column class.
*
* @param col
* the col
* @return the column class
*/
@Override
public Class<?> getColumnClass(final int col) {
return table.getColumns().get(col).getTypeClass();
}
/**
* Gets column count.
*
* @return the column count
*/
@Override
public int getColumnCount() {
return table.getColumns().size();
}
/**
* Gets column name by column index.
*
* @param columnIndex
* the column index
* @return the column name
*/
@Override
public String getColumnName(final int columnIndex) {
HashList<ColumnDefinition> columns = table.getColumns();
String columnName = columns.getColumnName(columnIndex);
return (columnName + " (" + columns.get(columnName).getType() + ")");
}
/**
* Gets row count.
*
* @return the row count
*/
@Override
public int getRowCount() {
return table.getRowCount();
}
/**
* Gets value at given cell.
*
* @param row
* the row
* @param col
* the col
* @return the value at
*/
@Override
public Object getValueAt(final int row, final int col) {
if (table.getColumns().get(col).getType() == TypeEnum.Boolean) {
if (table.get(row, col) != null
&& "true".equalsIgnoreCase(table.get(row, col))) {
return Boolean.TRUE;
}
return Boolean.FALSE;
} else if (table.getColumns().get(col).getType() == TypeEnum.Double) {
try {
String r = this.table.get(row, col);
return r;
Object obj = row.get(col);
if (row == null) {
return null;
}
return obj;
} catch (IndexOutOfBoundsException e) {
return null;
}
}
return table.get(row, col);
}
/**
* Gets whether the given cell is editable.
*
* @param arg0
* the arg0
* @param arg1
* the arg1
* @return true, if is cell editable
*/
@Override
public boolean isCellEditable(final int arg0, final int arg1) {
System.out.println("=========isCellEditable=========");
return true;
}
/**
* Removes table model listener.
*
* @param arg0
* the arg0
*/
@Override
public void removeTableModelListener(final TableModelListener arg0) {
}
/**
* Sets given value at given cell.
*
* @param value
* the value
* @param row
* the row
* @param col
* the col
*/
@Override
public void setValueAt(final Object value, final int row, final int col) {
if (table.getColumns().get(col).getType() == TypeEnum.Boolean) {
if (value instanceof Boolean
&& ((Boolean) value).booleanValue() == Boolean.TRUE) {
table.setValue(row, col, "true");
LOGGER.info("true " + value.toString());
} else {
LOGGER.info("true " + value.toString());
table.setValue(row, col, "false");
}
} else if(table.getColumns().get(col).getType()==TypeEnum.Double){
table.setValue(row, col, String.valueOf(value));
} else {
if (value != null) {
table.setValue(row, col, value.toString());
}
}
fireTableCellUpdated(row, col);
}
请帮我解决这个问题。
谢谢您试图显示的对象不符合格式(java.text.format) 一个想法可能是在
IllegalArgumentException
上的一个断点,以查看双打使用哪种格式。
在Eclipse上:“运行>>添加Java异常断点…”考虑提供一个示例来演示您的问题。这将导致更少的混乱和更好的响应哪一行引发了异常?
"Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Cannot format given Object as a Number."