问题描述
我在表格日期列中使用 JCalendar 的JDateChooser
作为tablecelleditor
.问题在于,当单击列单元格JDateChooser
时出现,但是如果失去焦点,则不会触发焦点丢失事件.如何使其失去焦点失火事件?这样做之后,有什么方法可以防止单击JCalendar
按钮后出现JCalendar
时,其发射焦点丢失吗?
I use JCalendar's JDateChooser
in a table date column as a tablecelleditor
. The problem is that when the column cell clicked JDateChooser
appears but if it loses its focus it does not fire focus lost event. How to make it fire focus lost event? And after doing this is there any way to prevent its firing focus lost when JCalendar
appeared after clicking the JCalendar
Button?
我想做的事情是,是否有人通过从日历中选择一个日期来指定日期.stopCellEditing();
否则,等到焦点丢失事件停止或cancelCellEditing();
The thing I try to do is if some one specify a date by selecting a date from the calendar stopCellEditing();
Else wait until focus lost event to stop or cancelCellEditing();
推荐答案
我在JDateChooser
中发现了一个propertyChanged
事件,该事件在选择日期时被触发.然后jTable1.putClientProperty("terminateEditOnFocusLost", true);
使表终止对focusLost的编辑
I found a propertyChanged
event in JDateChooser
which is fired when a date selected. And jTable1.putClientProperty("terminateEditOnFocusLost", true);
make the table terminate edit on focusLost
如果要更改使表格单元格失去焦点并终止的年份,则当日历弹出窗口关闭时:(
Edit : When calendar popup is down if you want to change the year that make table cell lose focus and terminateEditing :(
jDateChooser.addPropertyChangeListener(new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getPropertyName().equals("date")) {
stopCellEditing();
}
}
});
Edit(已解决):不用使用jTable1.putClientProperty("terminateEditOnFocusLost", true);
在TableCellEditor
中的JTable
中添加ta FocusListener
到JTable
并在失去焦点时取消编辑,从而有机会检查JDateChooser's
弹出窗口是否可见.但在此之前,应使用弹出式isVisible
方法扩展JDateChooser
.因为弹出变量是受保护的.而且单元格编辑器组件不应是可聚焦的,否则JTable
也会失去焦点
Edit(Solved) : Instead of using jTable1.putClientProperty("terminateEditOnFocusLost", true);
adding ta FocusListener
to JTable
in TableCellEditor
and cancel editing when focus lost give a chance to check if the JDateChooser's
popup is visible or not. But before this, JDateChooser
should be extended with a popup isVisible
method. Because popup variable is protected. And cell editor components should not be focusable else JTable
also loses its focus
这篇关于JCalendar焦点活动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!