Каково надлежащее событие для изменений в какой-либо ячейке JTable?

У меня есть простой JTable, существует два столбца, которые имеют значение: количество и значение (Целые числа). Каждый раз, когда пользователь вводит новую строку или обновляет один, каждое значение строк должно быть умножено на количество, результаты, суммированные вместе и сумма результата, отображенная в JLabel вне JTable. Довольно простые взгляды. За исключением того, что я понятия не имею, что событие должно я искать. Что-то как "измененное значение ячейки"? Когда я щелкаю правой кнопкой по JTable в NetBeans, я не вижу такого события или не распознаю его ;) Так или иначе, прежде чем я предлагаю некоторое странное noobish решение, я думал, что мог бы спросить здесь, что является надлежащим способом сделать это :)

8
задан Sejanus 14 January 2010 в 05:41
поделиться

2 ответа

Здесь можно найти ответы: https://stackoverflow.com/questions/507441/best-weather-apis

-121--4076954-

Для сериализации объектов DataTable не требуется встроенная сериализация. DataTable - это просто набор столбцов и строк. Следует просто закольцевать строки таблицы и сериализовать каждую из них.

В зависимости от компромиссов может потребоваться скопировать DataTable в эквивалентный объект передачи данных, а затем выполнить двоичную сериализацию этого объекта. Такой объект состоит из массива объектов, отражающих структуру DataTable . Объект будет иметь одно свойство для каждого столбца DataTable .

Таким образом, вы избегаете сериализации метаданных таблицы, и вы должны получить простую и быструю двоичную сериализацию.

Учитывая это, я бы избежал Remoting. Это правда, что структура несколько похожа на структуру WCF, но это все, кроме поддержки. Достаточно плохо вы застряли, используя почти самую устаревшую версию .NET, вы действительно не хотите полагаться на технологию, которая сама по себе устарела.

Розетки не красивые, но они хорошо понятны. Если вы будете осторожны, вы создадите код сокета, который относительно легко поддерживать, по крайней мере, до тех пор, пока вы должны придерживаться .NET 1.1.

Вы могли бы хотеть посмотреть на новые классы, добавленные в.NET 2.0 ( TcpClient, например), и создать подобный API. Таким образом, если вы когда-либо сможете обновить образ до .NET 2.0, то вам будет легче использовать преимущества кода, который будет необходимо поддерживать Microsoft.

-121--4180486-

необходимо добавить TaureModelListener , как описано здесь .

также в прослушивателе после программного обновления значения других значений ячеек необходимо вызвать model.fureTaureCellUpdated , чтобы сообщить swing об изменениях

7
ответ дан 5 December 2019 в 17:37
поделиться

Наконец, мне удалось найти, как это сделать в NetBeans со всей защитой кода, и так далее. Это щелчок правой кнопкой мыши на JTable в Design View, Properties, затем на вкладке Code, а затем добавить свой код в разделе Pre-Adding Code (код, вычисленный перед добавлением таблицы в контейнер или что-то в этом роде).

Точный код, который работает для меня это:

table.getModel().addTableModelListener(
new TableModelListener() 
{
    public void tableChanged(TableModelEvent evt) 
    {
         // here goes your code "on cell update"
    }
});

Я знаю, что Том, выше, предложил никогда не звонить getModel(), но я слишком новичок в Java, чтобы понять почему (не могли бы вы объяснить, пожалуйста...?) :) и это просто пример в любом случае, я добавляю этот ответ, чтобы показать как сделать это в NetBeans (спасибо pstanton за ответ , что сделать). Потому что я нашел так много людей, спрашивающих об этом в интернете, и никаких реальных ответов (кроме "скопируйте ваш защищенный код из защищенной зоны NetBeans, а затем настройте вашу таблицу).

3
ответ дан 5 December 2019 в 17:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: