我的应用应该有多种语言。默认为英语。问题是,如果用户将切换到不同的语言,除了ComboBox
所选值之外,所有内容都将被翻译。这是它的外观:
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();
如何刷新选定的值?
答案 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));