简体   繁体   English

Java没有为addListener找到合适的方法

[英]Java No suitable method found for addListener

I've tried to generate a listener for a list view which gets the string stored in the item selected, gets an integer for it and then calls a method. 我试图为列表视图生成一个侦听器,该侦听器获取存储在所选项目中的字符串,为其获取一个整数,然后调用一个方法。 However I keep getting a 但是我不断得到

Error:(37, 67) java: no suitable method found for addListener(<anonymous javafx.beans.value.ChangeListener<java.lang.String>>)
    method javafx.beans.Observable.addListener(javafx.beans.InvalidationListener) is not applicable
      (argument mismatch; <anonymous javafx.beans.value.ChangeListener<java.lang.String>> cannot be converted to javafx.beans.InvalidationListener)
    method javafx.collections.ObservableList.addListener(javafx.collections.ListChangeListener<? super java.lang.String>) is not applicable
      (argument mismatch; <anonymous javafx.beans.value.ChangeListener<java.lang.String>> cannot be converted to javafx.collections.ListChangeListener<? super java.lang.String>)

error. 错误。 I have a similar listener but it only reads an object from the list not the text. 我有一个类似的侦听器,但它只从列表中读取对象,而不是文本。

My listener is as follows: 我的听众如下:

lstRequests.getSelectionModel().getSelectedItems().addListener(new ChangeListener<String>(){
                        @Override
                        public void changed(ObservableValue<? extends String> observable,
                                            String oldValue, String newValue) {
                                int requestID;
                                int endIndex = 5;
                                String requestIDSubString =
                                        newValue.substring(5,endIndex);
                                boolean isADigit;
                                do{
                                        isADigit =
                                                isDigit(requestIDSubString.charAt(endIndex));
                                        endIndex++;
                                        requestIDSubString =
                                                newValue.substring(5,endIndex);
                                } while (isADigit);
                                endIndex--;
                                requestID =
                                        Integer.parseInt(newValue.substring(5
                                                ,endIndex));
                                Request selectedRequest = null;
                                Boolean requestFound = false;
                                int checkIndex = 0;
                                do {
                                        Request checkRequest =
                                                requests.get(checkIndex);
                                        if (checkRequest.getRequestID() == requestID){
                                                selectedRequest = checkRequest;
                                                requestFound = true;
                                        }
                                } while (!requestFound);

                                populateItems(selectedRequest); //Calls the populate
                                // items method.
                        }
                });

And my imports are: 我的进口是:

import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.fxml.FXML;
import javafx.scene.control.ListView;
import java.util.ArrayList;
import static java.lang.Character.isDigit;

Any ideas how to fix this? 任何想法如何解决这一问题?

Currently you're trying to add a ChangeListener to a ObservableList . 当前,您正在尝试将ChangeListener添加到ObservableList getSelectedItems() returns an ObservableList containing all the selected items. getSelectedItems()返回包含所有选定项目的ObservableList ObservableList s don't allow you to add a ChangeListener . ObservableList不允许您添加ChangeListener

If you want to use a listener for a single selection, you should add the listener to the selectedItem property: 如果要对单个选择使用侦听器,则应将侦听器添加到selectedItem属性:

lstRequests.getSelectionModel().selectedItemProperty().addListener(...);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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