Если я возьму JTable
и укажу classtype столбца в его модели следующим образом:
DefaultTableModel model = new DefaultTableModel(columnNames, 100) {
@Override
public Class<?> getColumnClass(int columnIndex) {
return Integer.class;
}};
Тогда всякий раз, когда пользователь попытается ввести в таблицу значение double
, Swing автоматически отклоняет ввод и устанавливает красный контур ячейки.
Я хочу, чтобы тот же эффект имел место, когда кто-то вводит в ячейку «отрицательный или 0» вход. У меня есть следующее:
@Override
public void setValueAt(Object val, int rowIndex, int columnIndex) {
if (val instanceof Number && ((Number) val).doubleValue() > 0) {
super.setValueAt(val, rowIndex, columnIndex);
}
}
}
Это не позволяет ячейке принимать любые неположительные значения, но не устанавливает красный цвет и не оставляет ячейку доступной для редактирования.
Я попытался выяснить, как JTable выполняет отклонение по умолчанию, но не нашел.
Как я могу заставить его отклонять неположительный ввод так же, как он отклоняет нецелочисленный ввод?