我有一张桌子(我在其中创建一个包含文本字段和按钮的表格单元格编辑器。 单击该按钮会弹出一个带有日期选择器的弹出菜单。 我们的想法是,只要在日期选择器中选择了日期,就应该更新文本字段。
问题是,当与日期选择器交互时,单元格编辑器的焦点会丢失,因此,表格将作为单元格编辑器侦听器(JTable.editingStopped())从编辑器中删除。
由于删除了侦听器,因此在设置新日期时在单元编辑器中调用fireProperyChange()无效,并且没有更新传播到表/文本字段。
您对我如何实现我想要的行为有什么想法吗?
谢谢。
这是在选择器中设置日期后的调用堆栈:
PropertySheetTable(JTable).editingStopped(ChangeEvent)行:4713
CellEditorAdapter(AbstractCellEditor).fireEditingStopped()line:125
CellEditorAdapter.stopCellEditing()行:152
JTable $ CellEditorRemover.propertyChange(PropertyChangeEvent)行:5954
PropertyChangeSupport.firePropertyChange(PropertyChangeEvent)行:339
PropertyChangeSupport.firePropertyChange(PropertyChangeEvent)行:347
PropertyChangeSupport.firePropertyChange(String,Object,Object)行:276
DefaultKeyboardFocusManager(KeyboardFocusManager)。firePropertyChange(String,Object,Object)行:1389
DefaultKeyboardFocusManager(KeyboardFocusManager).setGlobalPermanentFocusOwner(Component)行:687
DefaultKeyboardFocusManager.dispatchEvent(AWTEvent)行:490
JXMonthView(Component).dispatchEventImpl(AWTEvent)行:4502
JXMonthView(Container).dispatchEventImpl(AWTEvent)行:2099
JXMonthView(Component).dispatchEvent(AWTEvent)行:4460
EventQueue.dispatchEvent(AWTEvent)行:599
EventDispatchThread.pumpOneEventForFilters(int)行:269
EventDispatchThread.pumpEventsForFilter(int,Conditional,EventFilter)行:184
EventDispatchThread.pumpEventsForHierarchy(int,Conditional,Component)行:174
EventDispatchThread.pumpEvents(int,Conditional)行:169
EventDispatchThread.pumpEvents(条件)行:161
EventDispatchThread.run()行:122