2017-08-18 18 views
1

私のアプリは複数の言語を持つ必要があります。英語はデフォルトです。問題は、ユーザーが異なる言語に切り替えると、ComboBox選択値を除いてすべてが翻訳されることです。これは、それがどのように見えるかです:ComboBox背後ComboBox選択された値が翻訳されない

enter image description here

コードされています

私が選択した値がリフレッシュ取得できますか
ObservableList<Currency> currencyItem= CurrencyDA.getCurrencies(); 
currenciesComboBox.setItems(currencyItem); 
Callback<ListView<Currency>, ListCell<Currency>> currencyFactory = lv -> new ListCell<Currency>(){ 
    @Override 
    protected void updateItem(Currency currency, boolean empty){ 
      super.updateItem(currency, empty); 
      setText(empty ? "" : interfaceBundle.getString("currency_"+currency.getName())); 
      } 
     }; 
currenciesComboBox.setCellFactory(currencyFactory); 
currenciesComboBox.setButtonCell(currencyFactory.call(null)); 
currenciesComboBox.getSelectionModel().selectFirst(); 

+1

あなたのアップデート項目の方法があることにも注意してくださいこれを行う1つの方法は、次のコードであります違う。 itemが!= nullであるかどうかをテストし、setTextより前に空でない場合はセルに、そうでなければnullに設定する必要があります。 Plsは、ドキュメント – user43968

答えて

0

doc

からコンボボックスは、内部でリストビューでコンテンツをレンダリングすると、APIを設定するカスタムセル工場を可能にするために、ComboBoxクラスに存在します。セルファクトリの詳細については、CellおよびListCellクラスを参照してください。 セルファクトリがコンボボックスに設定されている場合、コンボボックスがクリックされたときに表示されるリストビューでのみセルが使用されることに注意してください。 ComboBoxの 'ボタン'領域のレンダリングもカスタマイズしたい場合は、ボタンセルプロパティでカスタムのListCellインスタンスを設定できます。

//(note the use of setButtonCell): 

Callback<ListView<String>, ListCell<String>> cellFactory = ...; 
ComboBox comboBox = new ComboBox(); 
comboBox.setItems(items); 
comboBox.setButtonCell(cellFactory.call(null)); 
comboBox.setCellFactory(cellFactory); 

だから、あなたが追加する必要が唯一のものである:

currenciesComboBox.setButtonCell(currencyFactory.call(null));

+0

の例を参照してください申し訳ありませんが、私の悪い、私は更新された質問。 T^T – Alyona

+0

私はこの行を私の 'translate()'メソッドにも置いて動作しています)だから私はこの答えが正しいと思います – Alyona

関連する問題