当用户关闭主应用程序窗口时,我试图找到一种优雅的方法来使JTable停止单元格编辑(实际上取消它)。我知道可以使用WindowAdapter完成类似的操作,但是要使其正常工作,我需要对窗口的引用。问题是我有时没有它。
最佳答案
突然退出可能需要在多个级别进行处理。
假设用户必须离开表才能单击Exit控件,则应通过设置表的"terminateEditOnFocusLost"
属性来获得所需的结果。
table.putClientProperty("terminateEditOnFocusLost", true);
如果您必须诉诸
WindowListener
或类似名称,则可以明确地停止编辑,如here所示。CellEditor cellEditor = table.getCellEditor();
if (cellEditor != null) {
if (cellEditor.getCellEditorValue() != null) {
cellEditor.stopCellEditing();
} else {
cellEditor.cancelCellEditing();
}
}
因为主机拥有框架装饰,所以某些平台需要特殊处理才能拦截关闭控制,如here所述。
Preferences
尽最大努力保持更新的值。