简体   繁体   中英

Selecting Items in JComboBox

I have two combo boxes with a list of distance units to convert from/to. Now, when I want to choose eg. "Centimeter" from the ComboBox From (distance)... , I really don't need to have "Centimeter" in ComboBox To (distance)... , because it doesn't make sense to convert from centimeter to centimeter.

So when "Centimeter" is selected in From (distance)... I want it to be removed in To (distance)... ComboBox. But, when I change my selection (say "Meter"), I want "Centimeter" to be back and "Meter" disappear etc.

I managed to remove the selected item in To (distance)... box, but don't know how to return it back when I change my selection. Besides, when I change selection, the code below just removes the corresponding item in To (distance)... ComboBox.

Please guide me to the correct solution. Here is the corresponding code. I can give you the whole code if you need. Thank you!

private String[] convertFromDistance = {"From (distance)...", "Centimeter", "Inch", "Kilometer", "Knot", "Meter", "Mile", "Millimeter", "Yard"};
private String[] convertToDistance = {"To (distance)...", "Centimeter", "Inch", "Kilometer","Knot", "Meter", "Mile", "Millimeter", "Yard"};
private JComboBox fromListDistance, toListDistance;

fromListDistance.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        String list = (String)fromListDistance.getSelectedItem();

        for (int i=0; i<convertToDistance.length; i++) {
            if (convertToDistance[i].equals(list)) {
                toListDistance.removeItem(convertToDistance[i]);
                //here should go the code for adding back the item if selection is changed
            }
        }
    }
});

    toListDistance = new JComboBox<String>(convertToDistance);

first thing you i should do in your problem is to know what is the selected choice from fromListDistance combo box .. after that i have to refill the toListDistance combo box except for the choice that the user have selected .. it's easy to do this with if statement

fromListDistance.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent evt) {
            //saving the selected choice   
            String choise=fromListDistance.getSelectedItem().toString();

            //here we remove all items from the combo box
            toListDistance.removeAllItems();

            for (int i = 0; i < convertToDistance.length; i++) {
                String distance=convertToDistance[i];
                //compare the selected choice with the convertToDistance[i]
                if (choise.equals(distance)) {
                    continue;
                }
                toListDistance.addItem(distance);
            }
        }
    });

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM