Некоторое время назад я попытался записать инструмент, который автоматически генерирует модульные тесты на c файлы.
Для предварительной обработки я провел файлы через GCC. Вывод ужасен, но можно легко проследить где в исходном коде из предварительно обработанного файла. Но для Ваших потребностей Вам еще, возможно, понадобилось бы что-то.
я использовал Метр как основа для синтаксического анализатора C. Это - открытый исходный код и использует закон и yacc. Это помогло встать и работающий в скором времени, полностью не понимая закон & yacc.
я также записал приложение C начиная с закона & решение для yacc не могло помочь мне проследить функциональность через функции и проанализировать структуру целой функции в одной передаче. Это стало неудобным в сопровождении в скором времени и отказалось.
Table Stop Editing объясняет, что происходит, и дает несколько простых решений.
Вам необходимо добавить слушателя фокуса . Учитывая, что JTable в основном является контейнером своих компонентов ячеек, вам действительно нужен прослушиватель фокуса для каждой ячейки в вашей таблице, которая должна вести себя указанным вами образом.
Для этого вам необходимо создать собственный редактор ячеек, который обертывает компонент ячейки, имеющий зарегистрированный прослушиватель фокуса. И когда вы получаете обратный вызов для события потери фокуса, вы выполняете сохранение данных по мере необходимости.
Это в значительной степени детализирует большую часть того, что вам нужно сделать . Подробностей реализации прослушивателя фокуса здесь нет, но это довольно просто.
Допустим, вы действительно используете JTextComponent в качестве компонента ячейки. Затем:
public void focusLost(FocusEvent e) {
JTextComponent cell = (JTextComponent) e.getSource();
String data = cell.getText();
// TODO: save the data for this cell
}
[ps edit]:
Поток, который вызывает вас с этим событием, является потоком отправки. НЕ используйте его для действий с большой задержкой. Но если вы просто переворачиваете биты в куче, все должно быть в порядке.