2010-08-05 75 views
0

我有一个表格(在这个表格中我制作了一个由单个文本框和一个按钮组成的表格单元格编辑器 点击此按钮弹出一个带日期选择器的弹出式菜单 这个想法是否在日期选择器中选择日期时应更新文本字段Swing:防止CellEditor失去焦点

问题是,当与日期选择器交互时,单元格编辑器的焦点将丢失,因此表被删除(JTable.editingStopped())

由于侦听器已被删除,因此在设置新日期时在单元格编辑器中调用fireProperyChange()没有效果并且没有更新传播到表格/文本字段。

你有什么想法可以实现我想要的行为吗?

谢谢。

下面是在选择器设置日期后调用堆栈:

PropertySheetTable(JTable中).editingStopped(的ChangeEvent)线:4713
CellEditorAdapter(AbstractCellEditor).fireEditingStopped()线:125
CellEditorAdapter.stopCellEditing ()线:152
的JTable $ CellEditorRemover.propertyChange(PropertyChangeEvent的)线:5954 PropertyChangeSupport.firePropertyChange(PropertyChangeEvent的)线:339 PropertyChangeSupport.firePropertyChange(PropertyChangeEvent的)线:347 的PropertyChangeSupport。的firePropertyChange(字符串,对象,对象)线:276
DefaultKeyboardFocusManager(的KeyboardFocusManager).firePropertyChange(字符串,对象,对象)线:1389 DefaultKeyboardFocusManager(的KeyboardFocusManager).setGlobalPermanentFocusOwner(成分)线:687 DefaultKeyboardFocusManager.dispatchEvent(AWTEvent中)线:490
JXMonthView(成分).dispatchEventImpl(AWTEvent)方法行:4502
JXMonthView(容器).dispatchEventImpl(AWTEvent)方法行:2099
JXMonthView(成分).dispatchEvent(AWTEvent)方法行:4460
EventQueue.dispatchEvent( AWTEvent)行:599
EventDispatchThread.pump OneEventForFilters(INT)线:269
EventDispatchThread.pumpEventsForFilter(INT,条件,EventFilter)方法行:184
EventDispatchThread.pumpEventsForHierarchy(INT,条件,组分)线:174个
EventDispatchThread.pumpEvents(INT,情况而定)线:169
EventDispatchThread.pumpEvents(有条件的)线:161
EventDispatchThread.run()线:122

回答

0

阅读Swing指南上How to Use Tables。有一个使用Color Chooser作为popop编辑器的例子。数据选择器的概念应该是相同的。