检查listview< string>是否包含string-javafx

ffvjumwh  于 2021-07-08  发布在  Java
关注(0)|答案(3)|浏览(307)

我正在制作一个javafx应用程序,其中有一个 ComboBox<String> ,因此当我单击组合框中的任何项目时,我将该项目添加到 String course 然后附上我的 ListView<String> 与课程字符串。
但同时,我不想在listview中添加任何重复项。
那么,可能的方法是什么呢?有没有办法检查listview是否包含它?我试过了,但无法将contains与listview和 String course ```
@FXML
private ComboBox select_subject;

@FXML
private ListView<String> course_list;

public void diplaysubjects() {
        String course = select_subject.getSelectionModel().getSelectedItem();
               course_list.getItems().add(course.toString());
}
chhkpiq4

chhkpiq41#

你可以用 ObservableList.contains 快速检查是否出现类似项目的方法:

public void diplaysubjects() {
    String item = select_subject.getSelectionModel().getSelectedItem();
    ObservableList<String> courses = course_list.getItems(); // Only here to clarify the code

    if (!courses.contains(item))
        courses.add(item);
}

我不知道您的代码使用了哪种模式,但是如果它是mvc类型的,我建议您直接使用模型的可观察列表,而不是调用 course_list.getItems() .

dojqjjoe

dojqjjoe2#

我建议您将可观察列表与listview一起使用。你喜欢这样吗

public class Controller implements Initializable {

@FXML
private ComboBox<String> select_subject;

@FXML
private ListView<String> course_list;

private ObservableList<String> list = FXCollections.observableArrayList();

@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
    course_list.setItems(list);
}

public void diplaysubjects() {
    String course = select_subject.getSelectionModel().getSelectedItem();
    //Instead of adding directly to listview add to observablelist
    //course_list.getItems().add(course.toString());
    list.add(course);
}

//To check the list contains the item
private boolean doesExists(String element){
    return list.contains(element);
}
}
bakd9h0s

bakd9h0s3#

您可以添加一个arraylist(),在其中添加字符串(如果不包含该字符串),然后将其添加到listview。

@FXML
    private ComboBox<String> select_subject;

    @FXML
    private ListView<String> course_list;

    public void diplaysubjects() {
            ArrayList<String> s = new ArrayList<>();

            String course = select_subject.getSelectionModel().getSelectedItem();
             if (!s.contains(course)){
                 s.add(course);
                 course_list.getItems().add(course.toString());
             }
    }

相关问题