как заставить редактор ячеек в jtable принимать изменения - PullRequest
4 голосов
/ 24 июня 2011

У меня есть jtable с несколькими редактируемыми ячейками

, когда кто-то нажимает кнопку «Сохранить» в меню, он не сохраняет последнее значение, которое все еще редактируется в данный момент.(если только они сначала не выходят из ячейки)

Я могу проверить, редактируется ли она, вызывая .isEditing (), которая возвращает true.

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

Может кто-нибудь указать мне правильное направление

спасибо

Ответы [ 3 ]

6 голосов
/ 24 июня 2011

Вы можете вручную вызвать:

JTable table;
table.getCellEditor().stopCellEditing();

Это должно привести к прекращению редактирования таблицы в этой ячейке.Переопределив метод stopCellEditing() вашего TableCellEditor и вернув false при определенных обстоятельствах, вы можете указать, что значение ячейки в настоящее время недопустимо и, следовательно, редактирование не может быть остановлено в это время.

6 голосов
/ 06 ноября 2013

если у вас есть jtable с несколькими редактируемыми ячейками

когда кто-то нажимает кнопку «Сохранить» в меню, оно не сохраняет последнее значение, затем добавьте приведенный ниже кодовый код

Во-первых, таблица автоматически прекращает редактирование и сохраняет данные. Это можно сделать, установив свойство в таблице:

JTable table = new JTable(...);
table.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);

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

1 голос
/ 24 июня 2011

Если я правильно помню, редактируемое / добавленное значение присутствует в компоненте редактора ячеек, по умолчанию это EditBox, НО не присутствует в табличной модели.Если это возможно, попробуйте проверить компонент редактора ячеек, он должен вам помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...