我使用JCalendar的 JDateChooser
在表格日期列中作为 tablecelleditor
。问题是,当单击的列单元格出现 JDateChooser
时,但如果它失去焦点,它不会触发焦点丢失事件。如何让它触发焦点丢失事件?执行此操作后,有什么方法可以防止单击 JCalendar
按钮后出现 JCalendar
时触发焦点丢失?
我尝试做的事情是,如果有人通过从日历中选择日期来指定日期 stopCellEditing();
否则等到焦点丢失事件停止或 cancelCellEditing();
最佳答案
我在 JDateChooser
中发现了一个 propertyChanged
事件,该事件在选择日期时触发。并且 jTable1.putClientProperty("terminateEditOnFocusLost", true);
使表格在 focusLost 时终止编辑
编辑:当日历弹出窗口关闭时,如果您想更改使表格单元格失去焦点并终止编辑的年份:(
jDateChooser.addPropertyChangeListener(new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getPropertyName().equals("date")) {
stopCellEditing();
}
}
});
编辑(已解决):而不是使用 jTable1.putClientProperty("terminateEditOnFocusLost", true);
将 ta FocusListener
添加到 JTable
TableCellEditor
并在焦点丢失时取消编辑,让您有机会检查 JDateChooser
弹出窗口是否可见。但在此之前,JDateChooser
应该使用弹出 isVisible
方法进行扩展。因为弹出变量是 protected 。并且单元格编辑器组件不应该具有焦点,否则 JTable
也会失去焦点
关于java - JCalendar焦点事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7643893/