Как пометить ввод ячейки JTable как недопустимый?

Если я возьму 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 выполняет отклонение по умолчанию, но не нашел.

Как я могу заставить его отклонять неположительный ввод так же, как он отклоняет нецелочисленный ввод?

11
задан Ratan Uday Kumar 26 July 2019 в 04:19
поделиться