2016-04-15 1 views
0

javafxクラスShowBytesには、バイトa-zが含まれています。各バイトは次のように定義されています。クラスとコンボボックス間のJavafxのリンク

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

クラスのバイトリストを入力してコンボボックスに表示します。あなたはバイトとStringとオーバーライドを含むクラスを作成することができ、私はコンボボックスでAを選択した場合、それはまだバイト0

+0

あなたは何をしようとしていますか? 'ComboBox'に変数名を表示しますが、アイテムタイプを' Byte'にしておきますか?それらの価値はユニークですか?なぜあなたはこれをしたいのですか? 'Byte'をアイテムタイプとして使用する利点は、単にアイテムを' byte'に変換するのではなく、使用している場合です。 – fabian

+0

バイトは、開発ボードとのシリアル通信を通じてデバイスに送信されます。バイトは、デバイスによってコマンドとして解釈されます。クラスからバイトを返すgetbytes(String Bytename)という関数を持つことは可能ですか? – tashtoons

+0

そのクラスを変更してより適切なデータ構造にデータを置くことはできませんか? – fabian

答えて

1

を表すように、私はクラスShowBytesのバイトにコンボボックスの項目をリンクすることができます任意の方法はあります文字列を返す方法は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

関連する問題