2011-10-04 177 views
1

我在表日期列中使用JCalendarJDateChooser作爲tablecelleditor。問題是,當列單元格點擊JDateChooser出現,但如果它失去了焦點,它不會引發焦點丟失事件。如何使火災焦點失去活動?這樣做之後有什麼辦法可以防止它在點擊JCalendar按鈕後出現JCalendar時失去焦點嗎?JCalendar焦點事件

我嘗試做的事情是如果有一個人被從日曆stopCellEditing();選擇日期指定日期否則等到聚焦丟失事件停止或cancelCellEditing();

enter image description here

+1

,因爲我知道有JCalendar是有包括TableEditor /渲染得 – mKorbel

+0

我不能找到它:你用JCalendar從罐子,或者從源文件,如果從罐子,然後下載源/ – MOD

+0

是文件(JCalendarCellEditor.java) – mKorbel

回答

1

我發現了一個propertyChanged事件JDateChooser當選定一個日期被解僱。而jTable1.putClientProperty("terminateEditOnFocusLost", true);使表終止編輯在focusLost

編輯:當日歷彈出窗口下來,如果你想改變的一年,使表格單元格失去焦點和terminateEditing :(

jDateChooser.addPropertyChangeListener(new PropertyChangeListener() { 

    @Override 
    public void propertyChange(PropertyChangeEvent evt) { 
     if (evt.getPropertyName().equals("date")) { 
      stopCellEditing(); 
     } 
    } 
}); 

編輯(解決):不是使用jTable1.putClientProperty("terminateEditOnFocusLost", true);加入TA FocusListenerJTableTableCellEditor和取消編輯時,焦點丟失提供一個機會來檢查JDateChooser's彈出窗口可見或不可見,但在此之前,JDateChooser應該用彈出isVisible方法進行擴展。由於彈出變量是受保護的。而單元格編輯器組件不應該聚焦,否則JTable也就失去了焦點

1

source distribution通過@提及mKorbel,com.toedter.calendar.demo.DemoTable是一個使用com.toedter.calendar.JDateChooserCellEditor作爲單元編輯器的示例。基本步驟是這些。

JTable table = new JTable(…); 
table.setDefaultEditor(Date.class, new JDateChooserCellEditor()); 

附錄:這裏是一個sscce顯示預期的行爲。

import com.toedter.calendar.demo.DemoTable; 
import java.awt.EventQueue; 
import javax.swing.JFrame; 

/** @see http://stackoverflow.com/questions/7643893 */ 
public class CalendarTable { 

    private void display() { 
     JFrame f = new JFrame("CalendarTable"); 
     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     f.add(new DemoTable()); 
     f.pack(); 
     f.setLocationRelativeTo(null); 
     f.setVisible(true); 
    } 

    public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 

      @Override 
      public void run() { 
       new CalendarTable().display(); 
      } 
     }); 
    } 
} 
+0

我用它,但它是一個簡單的celleditor – MOD

+0

順便說一句,當JDateChooser中的日期發生變化時,我發現propertyChanged事件。現在我只需要製作JDateChooser fire focusLost – MOD

+0

我無法重現您使用'JDateChooserCellEditor'描述的效果;一個[sscce](http://sscce.org/)可能會提供一些啓示。 – trashgod