java - 如何使 JavaFX ComboBox 中没有重复项

标签 java javafx java-8

在此程序中,您可以使用文本字段将单词添加到 ComboBox。您将如何使程序不接受 ComboBox 中已有的任何单词?我试图做到这一点,如果文本字段输入等于 ComboBox 中的某些内容,那么它不应该添加它,但它不会工作。

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);

    }
}

最佳答案

您正在将 items 列表本身与您要添加的元素进行比较。这总是导致 false 并且总是添加该项目。您需要使用 contains 来检查元素是否已经在列表中:

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

关于java - 如何使 JavaFX ComboBox 中没有重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55266335/

相关文章:

java - Facebook Android SDK 的 key 哈希

java - 摩尔斯电码翻译

java - RFID Phidg​​et Manager 附加事件

java - 如何传递和使用任意 lambda 函数作为参数

java - InterstitialAd的构造函数

image - 将图像添加到特定位置的按钮 JavaFX

Javafx:更新TableCell

javafx - 什么是 javafx 2.1 中的警报替换?警报在 javafx 1.3 中但不在 javafx 2.1 中

Eclipse 开普勒 Java 8

java - Optional.ofNullable() 是否应该用于空检查?