【问题标题】:Javafx linking between Class and Combobox类和组合框之间的 Javafx 链接
【发布时间】:2016-04-15 07:29:04
【问题描述】:

我有一个 javafx 类 ShowBytes 包含字节 a-z 。每个字节定义如下

public static final byte A = (byte) 0x00;

我想填充类中的字节列表并将它们显示在组合框中。有什么办法可以将组合框项目链接到 ShowBytes 类中的字节,这样如果我在组合框中选择 A 它仍然代表字节 0。

【问题讨论】:

  • 你想做什么?在ComboBox 中显示变量名称,但保持使项目类型为Byte?这些价值观是独一无二的吗?你为什么要这样做?使用Byte 作为项目类型而不是简单地将项目转换为byte 有什么好处?
  • 字节将通过串行通信发送到设备到开发板。字节将被设备解释为命令。是否有可能有一个名为 getbytes(String Bytename) 的函数,它将从类中返回字节。
  • 不能修改那个类,把数据放到更合适的数据结构里吗?
  • 是的,我可以。问题是 im a newbie to javafx so im 仍在试图让我了解一些事情。什么类型的数据结构适合。

标签: javafx combobox


【解决方案1】:

您可以创建一个包含字节和String 的类并覆盖toString 方法以返回字符串。如果需要,您可以从该类中获取值

例如

ObservableList<NamedByteValue> bytes = FXCollections.observableArrayList();

// just filling it with some sample values here
for (char c = 'A'; c <= 'Z'; c++) {
    bytes.add(new NamedByteValue((byte) (c - 'A'), Character.toString(c)));
}

ComboBox<NamedByteValue> comboBox = new ComboBox<>(bytes);
comboBox.valueProperty().addListener((observable, oldValue, newValue) -> System.out.println(newValue.getValue()));
public static class NamedByteValue {

    private final byte value;
    private final String name;

    public NamedByteValue(byte value, String name) {
        this.value = value;
        this.name = name;
    }

    public byte getValue() {
        return value;
    }

    public String getName() {
        return name;
    }

    @Override
    public String toString() {
        return name;
    }

}

【讨论】:

    猜你喜欢
    • 2020-07-16
    • 2017-01-07
    • 2012-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多