测试一个datepicker是否有值

时间:2014-09-21 20:50:21

标签: javafx javafx-2

我有两个数据采集器,d1和d2。 有一个过滤功能,只能过滤d1,仅过滤d2或同时过滤d1和d2。

@FXML
DatePicker d1;
@FXML
DatePicker d2;

public void filter(){
  SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd");

  String st = ft.format(ft.parse(this.d1.getValue().toString())));
  String en = ft.format(ft.parse(this.d2.getValue().toString())));

  if(st == null && en != null)
    filterbySt(d1);
  else
    filterbyEn(d2);
}

如果未设置d1或d2,我会收到空​​指针异常

如何测试是否尚未设置日期选择器?

2 个答案:

答案 0 :(得分:2)

问题

如果未设置d1 / d2 ae,d1.getValue()将返回null,使用d1.getValue().toString()会抛出NullPointerException

解决方案

在尝试从datepicker中获取值之前,只需输入null check。如果datePicker.getValue()null,则表示尚未设置 datepicker

...
String st, en =null;
if(d1.getValue() != null){
  st = ft.format(ft.parse(this.d1.getValue().toString())));
}
if(d2.getValue() != null){
  en = ft.format(ft.parse(this.d2.getValue().toString())));
}
...

答案 1 :(得分:0)

我也试过像这样

捕获nullPointer异常
  //catching the null pointer exception and moving on.
    String st = null, en = null;
    try{
        st = ft.format(ft.parse(this.d1.getValue().toString())));
    }catch(NullPointerException ex) {}

    try{
         en = ft.format(ft.parse(this.d2.getValue().toString())));
    }catch(NullPointerException ex){}