ComboBox选择的值未被翻译

时间:2017-08-18 09:32:42

标签: javafx combobox translation

我的应用应该有多种语言。默认为英语。问题是,如果用户将切换到不同的语言,除了ComboBox所选值之外,所有内容都将被翻译。这是它的外观:

enter image description here

ComboBox后面的代码是:

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 个答案:

答案 0 :(得分:0)

来自doc

  

由于ComboBox在内部使用ListView呈现内容,因此ComboBox类中存在API以允许设置自定义单元工厂。有关单元工厂的更多信息,请参阅Cell和ListCell类。 请务必注意,如果在ComboBox上设置了单元格工厂,则单元格将仅在单击ComboBox时显示的ListView中使用。如果您还想自定义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));