当我在java swing中点击JDatePicker中的其他地方时,如何关闭弹出的DatePicker?

时间:2014-03-18 10:19:15

标签: java swing datepicker

我下载并使用JDatePickerhttp://sourceforge.net/projects/jdatepicker/)。我把它放在JTextField中,当我点击弹出窗口中的任何其他地方时弹出窗口没有关闭(就像所有其他弹出窗口一样)。我试着找出,我怎么能关闭弹出窗口但是我没找到什么? 任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:3)

这已在项目github页面上记录为问题: https://github.com/JDatePicker/JDatePicker/issues/29

它已被修复,将成为下一个版本(1.4.0)的一部分: https://github.com/JDatePicker/JDatePicker/commit/4fa441a8e06691e4a00573379ea4d218710d7d1a

答案 1 :(得分:1)

编辑2014年12月: JDatePicker的开发人员已修复此问题。请参阅下面的juanheyns的答案。

在查看JDatePicker的源代码后,我认为如果不更改JDatePicker的源代码,就无法做到这一点。

实现该行为需要对类net.sourceforge.jdatepicker.impl.JDatePickerImpl的源代码进行一些小的更改(第209行):

    /**
     * Called internally to popup the dates.
     */
    private void showPopup() {
        // This is the replaced code:
//      if (popup == null){
//          PopupFactory fac = new PopupFactory();
//          Point xy = getLocationOnScreen();
//          datePanel.setVisible(true); 
//          popup = fac.getPopup(this, datePanel, (int) xy.getX(), (int) (xy.getY()+this.getHeight()));
//          popup.show();
//      }
        // This is new code
        JPopupMenu pop = new JPopupMenu();
        pop.add(datePanel);
        pop.show(this, this.getX(), this.getY() + this.getHeight());
    }

另请查看How do you hide a Swing Popup when you click somewhere else了解更多详情。