2010-08-05 154 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編輯器的例子。數據選擇器的概念應該是相同的。