2011-09-20 50 views
1

我在独立Java应用程序中使用Toeder JDateChooser,如以下代码片段所示。这里的目的是:JDateChooser setDate调用意外终止执行

  1. 到日历实例转移到一年的所需星期,然后
  2. 要设置起始日期和所需的一周相应的结束日期。这些日期保存在两个JDateChooser实例中,即jDateChooserBookBeginjDateChooserBookEnd
Calendar c = Calendar.getInstance(); 
int currentWeekOfYear = c.get(Calendar.WEEK_OF_YEAR); 
int desiredWeekOfYear = jComboBookWeekMainPanel.getSelectedIndex() + 1; 
c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek()); 

for (int i = currentWeekOfYear; i < desiredWeekOfYear; i++) { 
    c.add(Calendar.DAY_OF_WEEK, 7); //e.g. set to next Monday 
} 
jDateChooserBookBegin.setDate(c.getTime()); // ***** HERE ***** 

c.add(Calendar.DAY_OF_WEEK, 6); //set to the end of week e.g. Sunday 
jDateChooserBookEnd.setDate(c.getTime()); 

问题:比方说,上面的代码是一个方法内执行。我在neatbeans中以调试模式检查了代码,我发誓当执行到达标有虚线箭头的行时,其余的行根本不被执行,并且封装方法立即返回给调用者。这导致jDateChooserBookEnd不会被设置为正确的日期,因此我的程序以不希望的方式运行。

问题:JDateChooser类的setDate方法为什么会导致其余行不会通过返回调用方来执行?这有没有一个已知的错误?你有任何线索吗?这看起来不太可能,但它正在发生。我使用Java 6


完整的方法内容可用以下。以上代码片段是您在下面看到的简化版本。在该程序中,我有两个名为下周和前一周的jButton。只要点击其中一个按钮,相关的actionPerformed方法就会调用下面的方法。

private void update_DateFieldsInMainPanel() { 
    Calendar c = Calendar.getInstance(); 
    int currentWeekOfYear = c.get(Calendar.WEEK_OF_YEAR); 
    int desiredWeekOfYear = jComboBookWeekMainPanel.getSelectedIndex() + 1;    c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek()); 

    if (desiredWeekOfYear ==currentWeekOfYear) {        
     jDateChooserBokMainFrom.setDate(c.getTime());   
     c.add(Calendar.DAY_OF_WEEK, 6); 
     jDateChooserBokMainTill.setDate(c.getTime()); 
    } 
    else if (desiredWeekOfYear > currentWeekOfYear) { 
     for (int i = currentWeekOfYear; i < desiredWeekOfYear; i++) { 
      c.add(Calendar.DAY_OF_WEEK, 7); 
     } 
     jDateChooserBokMainFrom.setDate(c.getTime()); 
     c.add(Calendar.DAY_OF_WEEK, 6); 
     jDateChooserBokMainTill.setDate(c.getTime()); 
    } 
    else { 
     for (int i = currentWeekOfYear; i > desiredWeekOfYear; i--) { 
      c.add(Calendar.DAY_OF_WEEK, -7); 
     } 
     jDateChooserBokMainFrom.setDate(c.getTime()); 
     c.add(Calendar.DAY_OF_WEEK, 6); 
     jDateChooserBokMainTill.setDate(c.getTime()); 
    } 
} 
+0

这是在try/catch块中完成的吗?如果是这样,你是否捕捉到异常?是否抛出任何异常? –

+0

没有try/catch存在,绝对不会引发异常。 – farda

+0

这闻起来像某种地方发生的异常。但只有提供的信息,很难说。 –

回答

0

试图抓住Throwable的,而不是例外。

+0

我已经添加了一个try catch可以抛出,但即使这个还没有被捕获。 :( – farda