如何使用 JavaFX 8 插入整数数据?
How to insert Integer data with 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;
}
...
还创建了另一个 类,当我尝试添加数据时,我收到消息:
Caused by: java.lang.NullPointerException
at net.websimp.numdata.model.Intnumberdata.(Intnumberdata.java:11) at net.websimp.numdata.controller.IntnumberdataController.handleNewNum(IntnumberdataController.java:35)
我测试了所有引用,但是当将类型 Integer 更改为 String 时有效。为什么?
我认为你的错误来自空值(我很确定实际上是因为我现在测试过)。
运行 看到它冲突的这个片段:
Integer n = null;
SimpleIntegerProperty p = new SimpleIntegerProperty(n);`
例如,您可以将其初始化为 0,或者在您的情况下不适用?
有了 Optional<R>
,你可以分发可选的东西...看看 this
SimpleIntegerProperty
的构造函数采用 int
(即 而不是 Integer
)。所以你的构造函数
public IntNumberData(Integer num) {
this.num = new SimpleIntegerProperty(num);
}
隐式拆箱 num
,即有效编译为
public IntNumberData(Integer num) {
this.num = new SimpleIntegerProperty(num.intValue());
}
如果 num
是 null
,它将抛出 NullPointerException
。
您可以改为
public IntNumberData(Integer num) {
this.num = new SimpleIntegerProperty();
this.num.setValue(num);
}
但请注意,如果传入 null
(请参阅 documentation),实现会将其设置为 0
。
如果您真的想要支持空值的 Integer
类型的 属性,那么您应该使用 ObjectProperty<Integer>
而不是 IntegerProperty
。
我有一个表格,想插入整数数据。这是 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;
}
...
还创建了另一个 类,当我尝试添加数据时,我收到消息:
Caused by: java.lang.NullPointerException at net.websimp.numdata.model.Intnumberdata.(Intnumberdata.java:11) at net.websimp.numdata.controller.IntnumberdataController.handleNewNum(IntnumberdataController.java:35)
我测试了所有引用,但是当将类型 Integer 更改为 String 时有效。为什么?
我认为你的错误来自空值(我很确定实际上是因为我现在测试过)。
运行 看到它冲突的这个片段:
Integer n = null;
SimpleIntegerProperty p = new SimpleIntegerProperty(n);`
例如,您可以将其初始化为 0,或者在您的情况下不适用?
有了 Optional<R>
,你可以分发可选的东西...看看 this
SimpleIntegerProperty
的构造函数采用 int
(即 而不是 Integer
)。所以你的构造函数
public IntNumberData(Integer num) {
this.num = new SimpleIntegerProperty(num);
}
隐式拆箱 num
,即有效编译为
public IntNumberData(Integer num) {
this.num = new SimpleIntegerProperty(num.intValue());
}
如果 num
是 null
,它将抛出 NullPointerException
。
您可以改为
public IntNumberData(Integer num) {
this.num = new SimpleIntegerProperty();
this.num.setValue(num);
}
但请注意,如果传入 null
(请参阅 documentation),实现会将其设置为 0
。
如果您真的想要支持空值的 Integer
类型的 属性,那么您应该使用 ObjectProperty<Integer>
而不是 IntegerProperty
。