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