2014-01-03 4 views
0

Мне нужна помощь, я поражен обновлением jtable. Я на срок :(не удалось получить текущее значение редактируемой ячейки

У меня есть JTable и сохранить кнопку. таблица имеет две колонки, одна колонка этикетки и другой столбец для обеспечения значения. столбец, который имеет вход имеет текстовые поля и поля со списком. Когда я нажимаю кнопку «Сохранить», данные из таблицы должны сохраняться на стороне сервера в одном файле, а один файл - в формате ftp, а данные из этого файла отображаются в одной и той же таблице.

Проблема заключается в том, когда я редактирую ячейку и
Если я удалю фокус (выбрав другую не редактируемую ячейку) из этой ячейки, значение будет обновлено.

После многого поиска я нашел два решения:
1. jtable.putClientProperty ("terminateEditOnFocusLost", Boolean.TRUE);
2. jtable.getCellEditor()

Я попробовал много вещей и множество комбинаций вышеуказанных решений перед вызовом saveData, но ни одно из решений не является постоянным. ниже решение работает в 80% случаев.

saveActionPerformed() { 
    //----------------- 
    if(jtable.isEditing()){ 
     jtable.getCellEditor().stopCellEditing(); 
    } else { 
     jtable.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE)<br> 
    } 
    //------------------- 
    saveData(); //save data on server side and ftp the file and display again on screen<br> 
} 

saveData() { 
//should i put opposite functions of above used code in order to put back those properties on the jtable again, for example 
    dislaydata(); 
    jtable.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE)<br> 
} 

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

+1

для лучшей помощи скорее отправить сообщение [SSCCE] (http://sscce.org/), краткое, выполнимое, скомпилированное с жестко запрограммированным значением для JTable/XxxTableModel, использовать тег кода для кода, размещенного здесь – mKorbel

ответ

1
jtable.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE) 

Это заявление должно быть выполнено при создании таблицы:

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

Если вы вызываете это заявление в вашем ActionListener это слишком поздно, потому что фокус уже на кнопку сохранения.

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