Cómo hacer que sea así que no hay duplicados en JavaFX ComboBox

ClickZ:

En este programa, se puede añadir palabras al ComboBox utilizando un campo de texto. ¿Cómo le hacen para que el programa no aceptará ninguna palabra que ya están en el cuadro combinado? Traté de hacerlo así si la entrada de campo de texto es igual a algo en el cuadro combinado, entonces no debería añadir, pero no va a funcionar.

package gps_destinations_controller;

import gps_destinations_model.Model;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Label;
import javafx.scene.control.SingleSelectionModel;
import javafx.scene.control.TextField;

public class Controller implements Initializable 
{
    @FXML TextField destinationInput;
    @FXML ComboBox<String> destinationList;
    private SingleSelectionModel<String> selectionModel;

    private Model model;

    @Override
    public void initialize(URL url, ResourceBundle rb) 
    {
    model = new Model();

    destinationList.getItems().addAll(model.getDestinations());

    selectionModel = destinationList.getSelectionModel();  

    selectionModel.select(model.getSelectedIndex());
        System.out.println(destinationList.getItems());



    }    

    @FXML protected void addDestination() 
    {
        String input = destinationInput.getText();

         if(!destinationList.getItems().equals(input))
         {
        destinationList.getItems().add(input);
         }


        model.addDestination(input);


        destinationInput.clear();

    }






    @FXML protected void itemSelected( ActionEvent event ) 
    {
    int index = selectionModel.getSelectedIndex();
    model.updateSelection(index);

    }
}
Fabian :

Estás comparando la itemslista en sí al elemento que desee agregar. Esto siempre resulta en falsey siempre se añade el artículo. Es necesario utilizar containspara comprobar si un elemento ya está en la lista:

if(!destinationList.getItems().contains(input)) {
    destinationList.getItems().add(input);
}

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=201287&siteId=1
Recomendado
Clasificación