code: @Override
      public Object getValueAt(int rowIndex, int columnIndex) {
          Object result = null;
          Item item = getPropertySheetElement(rowIndex);
  
          if (item.isProperty()) {
              switch (columnIndex) {
                  case NAME_COLUMN:
                      result = item;
                      break;
  
                  case VALUE_COLUMN:
                      try {
                          result = item.getProperty().getValue();
                      } catch (Exception e) {
                          Logger.getLogger(PropertySheetTableModel.class.getName()).log(Level.SEVERE, null, e);
                      }
                      break;
  
                  default:
                  // should not happen
              }
          } else {
              result = item;
          }
          return result;
      }
docs: Retrieve the value at the specified row and column location. When the row
  contains a category or the column is {@link #NAME_COLUMN}, an
  {@link Item} object will be returned. If the row is a property and the
  column is {@link #VALUE_COLUMN}, the value of the property will be
  returned.
  
  @param rowIndex
  @param columnIndex
  @return
  @see javax.swing.table.TableModel#getValueAt(int, int)