【问题标题】:FXML and lambda expressions in Java not working?Java 中的 FXML 和 lambda 表达式不起作用?
【发布时间】:2015-12-22 21:39:52
【问题描述】:

我正在将我的简单联系人应用程序从普通的 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]))”不会被调用. 问题是我做错了什么还是无法正常工作??

【问题讨论】:

  • 您需要更具体地说明您面临的问题(是什么让您认为它不起作用?)。您是否收到编译错误、运行时异常或不正确的结果?
  • 对不起,你是对的,问题是没有从文件中读取任何结果,比如 3 条记录。并且没有错误或异常,只是看起来不会调用代码“v -> data.add(new Contact(v[0], v[1], v[2], v[3]))”。

标签: java javafx lambda java-8


【解决方案1】:

好吧,没问题,在进一步研究我的应用程序后,我发现我正在服用

fileE.getName();

我应该接受

fileE.getAbsolutePath();

因此应用会在适当的位置查找文件。

【讨论】:

    猜你喜欢
    • 2015-06-21
    • 2012-06-25
    • 1970-01-01
    • 1970-01-01
    • 2020-01-03
    • 2019-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多