我曾经使用JComboBox
来像这样在Swing中选择一个字节。
public synchronized void callPresetButtonActionPerformed(
java.awt.event.ActionEvent evt) {
byte _preset = (byte)getPresetcomboBox.getSelectedItem();
try {
something=presetNo[_preset-1];
byte[] command = {(byte) startTx, address, byteOne, goPreset, 0x00, something, endTx, 0x0F};
TwoWaySerialComm.SerialWriter sw = new TwoWaySerialComm.SerialWriter(
twoWaySerCom.serialPort.getOutputStream());
sw.out.write(command);
} catch (IOException e) {
e.printStackTrace();
}
}
});
Byte[] preset = { 1, 2, 3, 4, 5};
现在我转向JavaFX,我正在尝试做同样的事情。
@FXML
public void setPresetButton (ActionEvent event) {
byte _preset = (Byte)setPresetComboBox.getSelectedItem();
try {
something=presetNo[_preset-1];
byte[] command = {(byte) startTx, address, byteOne, setPreset, 0x00, something, endTx, 0x0F};
TwoWaySerialComm.SerialWriter sw = new TwoWaySerialComm.SerialWriter(
twoWaySerCom.serialPort.getOutputStream());
sw.out.write(command);
} catch (IOException e) {
e.printStackTrace();
}
}
Byte[] preset = { 1, 2, 3, 4, 5};
我收到一个错误:The method getSelectedItem() is undefined for the type ComboBox<Byte>
。
我想我理解错误的含义但是如何在JavaFX中解决它?
答案 0 :(得分:2)
正如错误消息所示,JavaFX getSelectedItem()
不存在方法ComboBox
。
您可以使用ComboBox
getSelectedItem的selection model作为
setPresetComboBox.getSelectionModel().getSelectedItem();
或ComboBox
的{{3}}直接作为
setPresetComboBox.getValue();
这两个属性之间的差异记录在value property:
中ComboBox公开了ComboBoxBase.valueProperty() ComboBoxBase,但有一些重要的价值点 需要理解与ComboBox相关的属性。这些 包括:
- value属性不限于项目列表中包含的项目 - 只要它是有效值,它就可以是任何值 输入T。
- 如果将value属性设置为非null对象,并且随后清除了items列表,则value属性不是 被淘汰了。
- 清除选择模型中的选择不会使value属性为空 - 它仍然与之前相同。
- 即使列表中没有项目(或更少项目),选择模型也可以将选择设置为给定索引 列表比给定的索引)。一旦项目列表进一步 填充,以便列表包含足够的项目以包含项目 给定的索引,都是选择模型 SelectionModel.selectedItemProperty()和value属性将是 已更新为具有此值。这与其他控件不一致 使用选择模型,但有意为ComboBox完成。