2015-03-13 5 views
1

Я пишу программу, которая вводит введенные пользователем значения в JTable, в одном столбце содержится siteNumber. Мне нужно проверить, используется ли этот номер сайта. Heres мой код для getValueAt().Получить значение int из ячейки JTable

public Object getValueAt(int row, int col) { 
    switch(col) { 
    case 0: 
     return (listSites.get(row).getNameReserving()); 

    case 1: 
     return (DateFormat.getDateInstance(DateFormat.SHORT). 
       format(listSites.get(row).getCheckIn().getTime())); 

    case 2: 
     return (listSites.get(row).getDaysStaying()); 

    case 3: 
     return (listSites.get(row).getSiteNumber()); 

    case 4: 
     if(listSites.get(row) instanceof Tent) 
      return("Tents: " + ((Tent) listSites.get(row)) 
        .getNumOfTenters()); 
     else 
      return ("Power bought: " + ((RV) listSites.get(row)) 
        .getPower() + " Amps"); 

    default: 
     return null; 
    } 
} 

В идеале было бы простой проверкой если (getValueAt (строка, столбец) == siteNumber), но это сравнение объекта и целого, и я не могу понять, как обойти это? это для университетского проекта, поэтому многие из них не мои оригинальные идеи, и я просто пытаюсь понять, как они хотят, чтобы я это делал.

listSites - это ArrayList of Sites, который является моим суперклассом.

Извините, если я глуп, но я действительно борюсь с этим.

+0

Вы можете использовать вот так. 'if (Integer.parseInt (table.getValueAt (row, col) == siteNumber)'. Попробуйте это! –

ответ

0

Я не уверен в вашей конкретной проблеме, но если вы получаете элемент из строки 3, то возвращается то, что указано в этом вызове: return (listSites.get(row).getSiteNumber());. И вы можете вернуть объект, возвращенный к типу, указанному в методе getSiteNumber() вашего класса. Я предполагаю, что он возвращается ... Integer (вы не говорите нам)? Если это так, примените его и используйте.


Что это звучит, как вам нужно, имеет мало общего с JTable или методом getValueAt(...). Вместо этого это звучит так, как будто вам нужна проверка ввода для того, где пользователь пытается ввести данные, вероятно, в вашем коде диалога ввода пользователя. В этом коде вы должны искать в коллекции listSites, чтобы убедиться, что номер дубликата сайта не вводится, и если это так, предупредите пользователя об их ошибке и запретите ввод данных. Возможно, вы хотите использовать InputVerifier, прикрепленный к JTextField.

+0

Извините за недостаток информации, вы были правы, полагая, что это int. Я сделал то, что вы сказали, и использовал для цикла, чтобы искать несколько строк и выставлять эту строку.Он не дает никаких ошибок, но код по-прежнему не работает для меня – Itheyln

+0

@Itheyln: Я хотел бы помочь вам дальше, но я не уверен, как, как вы нужно дать нам гораздо больше подробностей о том, как все не работает. '« все еще не работает для меня »,« не дает нам многого для продолжения. Пожалуйста, помните, что мы находимся в отличном невыгодном положении, поскольку мы только можете видеть код, который вы нам показываете, и можете только понять вопросы, которые вы полностью объясните нам. Пожалуйста, посмотрите [помощь], а также [как задать хорошие вопросы] (http://stackoverflow.com/help/how-to -ask), чтобы узнать, как вы можете улучшить этот вопрос и увеличить свои шансы получить достойные ответы. –

+0

Извините, что моя программа h как интерфейс GUI, который использует диалоговое окно для ввода, вход должен быть затем помещен в мой JTable. Прямо сейчас я пытаюсь сделать так, чтобы при попытке отправить пользовательский ввод, он проверит таблицу, чтобы убедиться, что нет дубликатов siteNumbers. В настоящее время мой код позволит несколько записей в JTable, несмотря на то, что они имеют один и тот же номер сайта. У меня есть код, который вызывает метод, который проверяет, есть ли дубликат, как только они попытаются отправить вход пользователя. вызванный метод имеет целочисленный параметр, который используется для сравнения с siteNumbers JTable. – Itheyln

Смежные вопросы