如何使用JavaFX 8插入整数数据



我有一个表单,想要插入整数数据。这是POJO:

IntNumberData.class

...
private final IntegerProperty num;
public IntNumberData() {
    this(null);
}
public IntNumberData(Integer num) {
    this.num    = new SimpleIntegerProperty(num);
}
public Integer getNum() {
    return num.get();
}
public void setNum(Integer num) {
    this.num.set(num);
}
public IntegerProperty numProperty() {
    return num;
}
...

还创建了其他类,当我试图添加数据时,我得到消息:

由:java.lang.NullPointerException引起在net.websimp.numdata.controller. intnumberdataconcontroller . handlenewnum (intnumberdataconcontroller .java:35)

我测试了所有的引用,但是当将Integer类型更改为String工作时。为什么呢?

SimpleIntegerProperty的构造函数接受int(即而不是Integer )。那么构造函数

public IntNumberData(Integer num) {
    this.num    = new SimpleIntegerProperty(num);
}

隐式地打开num,即它有效地编译为

public IntNumberData(Integer num) {
    this.num    = new SimpleIntegerProperty(num.intValue());
}

如果numnull,则抛出NullPointerException

你可以改成

public IntNumberData(Integer num) {
    this.num    = new SimpleIntegerProperty();
    this.num.setValue(num);
}

,但请注意,如果传入null,则实现将其设置为0(参见文档)。

如果你真的想要一个支持空值的Integer类型的属性,那么你应该使用ObjectProperty<Integer>而不是IntegerProperty

我认为你的错误来自null(我很确定实际上因为我现在测试了)。

运行这段代码看看是否冲突:

Integer n = null;
SimpleIntegerProperty p = new SimpleIntegerProperty(n);`
例如,

可以用0来初始化,或者这在您的情况下不适用吗?

使用Optional<R>,您可以分发选项…看看这个

相关内容

最新更新