package com.fr.extended.chart; import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.i18n.Toolkit; import com.fr.general.GeneralUtils; import com.fr.stable.StringUtils; import java.util.List; /** * Created by shine on 2018/9/27. */ public class UIComboBoxWithNone extends UIComboBox { protected String getDefaultLocaleString() { return Toolkit.i18nText("Fine-Design_Chart_Use_None"); } public UIComboBoxWithNone() { super(); addDefaultItem(); setDefaultSelectedItem(); } protected void setDefaultSelectedItem() { // JComboBox.setSelectedItem(o) // if(o!=null)寻找o对应的下拉选项 如果找不到 还是选中之前选中的 // 所以空字符串 不是选中空 是选中上次选中的 // 所以这边 可以写setSelectedItem(null) or setSelectedIndex(-1) setSelectedIndex(-1); } @Override public void refreshBoxItems(List list) { super.refreshBoxItems(list); addDefaultItem(); } @Override public void clearBoxItems() { super.clearBoxItems(); addDefaultItem(); } private void addDefaultItem() { addItem(getDefaultLocaleString()); } @Override public void setSelectedItem(Object anObject) { super.setSelectedItem(anObject); //找不到的都选中无。中文的无 英文下是none。 //改正:找不到的且anObject不是null的 全部选中无。 //改正:找不到的且anObject不是null的且anObject不是空字符串的 全部选中无。 if (getSelectedIndex() == -1 && StringUtils.isNotEmpty(GeneralUtils.objectToString(anObject))) { super.setSelectedItem(getDefaultLocaleString()); } } }