2016-04-15 48 views
0

我有一個javafx類ShowBytes其中包含字節a-z。每個字節的定義如下Classf和Combobox之間的Javafx連接

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

我想填充類中的字節列表並將它們顯示在組合框中。有沒有什麼辦法可以在類ShowBytes鏈接組合框項的字節,因此,如果我在下拉列表中選擇A它仍然代表字節0

+0

你到底想幹什麼?在'ComboBox'中顯示變量名,但保持項類型爲'Byte'?這些價值是否獨一無二?你爲什麼想這樣做?使用'Byte'作爲項目類型的好處是什麼,而不是在使用項目時簡單地將項目轉換爲'byte'? – fabian

+0

這些字節將通過串行通信發送到開發板。字節將被設備解釋爲命令。是否有可能有一個名爲getbytes(String Bytename)的函數,它將從類中返回字節。 – tashtoons

+0

你不能修改那個類並把數據放在一個更合適的數據結構中嗎? – fabian

回答

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; 
    } 

} 
+0

謝謝你。這是它 – tashtoons