我想要使用此代码编辑Java对象。我想从这个obj.getSizeBetweenMessages()得到的值是10:
ObservableList<Integer> zoptionsm = FXCollections.observableArrayList(
obj.getSizeBetweenMessages(), 90);
ComboBox<Integer> zcombom = new ComboBox<>(zoptionsm);
zcombom.getSelectionModel().select(obj.getSizeBetweenMessages());
zcombom.setEditable(true);
gpm.add(zcombom, 1, 1);
由于某种原因,ComboBox为空,并且不显示Object中的值。你能告诉我一些我错的地方吗?
答案 0 :(得分:2)
如果您的getSizeBetweenMessages()
方法返回一个int(不是整数),那么当您将结果传递给FXCollections.observableArrayList(...)
和zcombom.getSelectionModel().select(...)
时,您仍然依赖于自动装箱。在第一种情况下,这是有效的,因为没有适当的observableArrayList(...)
方法接受int,但在第二种情况下有一个select(...)
方法接受一个int,这是一个被调用的方法。因此,如果getSizeBetweenMessages()
返回10,那么您正在尝试选择位置10处的项目(而不是项目10本身),并且由于超出范围,因此不会选择任何内容。
修复方法是手动创建Integer
对象:
Integer sizeBetweenMessages = new Integer(obj.getSizeBetweenMessages());
ObservableList<Integer> zoptionsm = FXCollections.observableArrayList(
sizeBetweenMessages, 90);
ComboBox<Integer> zcombom = new ComboBox<>(zoptionsm);
zcombom.getSelectionModel().select(sizeBetweenMessages);
zcombom.setEditable(true);
gpm.add(zcombom, 1, 1);