我在独立Java应用程序中使用Toeder JDateChooser
,如以下代码片段所示。这里的目的是:JDateChooser setDate调用意外终止执行
- 到日历实例转移到一年的所需星期,然后
- 要设置起始日期和所需的一周相应的结束日期。这些日期保存在两个JDateChooser实例中,即
jDateChooserBookBegin
和jDateChooserBookEnd
。
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());
}
}
这是在try/catch块中完成的吗?如果是这样,你是否捕捉到异常?是否抛出任何异常? –
没有try/catch存在,绝对不会引发异常。 – farda
这闻起来像某种地方发生的异常。但只有提供的信息,很难说。 –