Java中的FXML和lambda表达式不起作用?

时间:2015-12-22 21:39:53

标签: java javafx lambda java-8

我正在努力将我的简单联系人应用程序从普通的JAVA FX重写为FXML。问题在于Lambda表达式。我有这样的界面:

interface ObjectCreator {
void create(String[] array);
}

问题出在我使用这个CSVFileReader的时候:

public static class CSVFileReader {
    String fileName;

    CSVFileReader(String fileName) {
        this.fileName = fileName;
    }

    void read(ObjectCreator creator) {
        try {
            BufferedReader csv = new BufferedReader(new FileReader(fileName));
            String row = csv.readLine();
            while (row != null) {
                creator.create(row.split(","));
                row = csv.readLine();
            }
            csv.close();
        } catch (IOException e) {
        }
    }
}

在此代码中,我使用lambda表达式从文件中读取联系人:

@FXML
public void openFile() {
    FileChooser fileChooser = new FileChooser();
    File fileE = fileChooser.showOpenDialog(scene.getWindow());
    if (fileE != null) {

        CSVFileReader reader = new CSVFileReader(fileE.getName());
        data.clear();

        reader.read(v -> 
        data.add(new Contact(v[0], v[1], v[2], v[3])));


    }
    System.out.println("open list");
}

我使用JDK 1.8.65这样安装新的。问题是没有错误或异常看起来像代码" v-> data.add(new Contact(v [0],v [1],v [2],v [3]))& #34;不会被调用。 问题是我做错了什么或它只是不工作?

1 个答案:

答案 0 :(得分:0)

毫无疑问,在进一步研究我的应用程序后,我发现我正在服用

fileE.getName();

我应该

fileE.getAbsolutePath();

因此应用程序会查找文件的正确位置。