gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-01 23:00:08 26 4
gpt4 key购买 nike

在此程序中,您可以使用文本字段将单词添加到 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com