首页 > 解决方案 > JavaFX 读取文本文件并将其显示到多个文本字段

问题描述

我有一个包含 4 行随机单词的文本文件,一行一行,我需要能够读取每一行并将其显示到其文本字段(第一行进入第一个文本字段等),但它只是读取最后一行并将其显示到任何文本字段中。

“myfile.txt”
一个

一二三

TextField label1Text = new TextField();
TextField label2Text = new TextField();
TextField label3Text = new TextField();


load.setOnAction(new EventHandler<ActionEvent>() {
    @Override
    public void handle(ActionEvent l) {
        
        
        String line = ""; 
        try {
        BufferedReader reader = new BufferedReader(new FileReader("myfile.txt"));
              
            while ((line = reader.readLine()) != null) {
           
              label1Text.setText(line);
              label2Text.setText(line);
              label3Text.setText(line);
              labelO2Text.setText(line);   
            }
            
        } 

        catch (FileNotFoundException e) {
         e.printStackTrace();
        }
        
        catch (IOException e) {
            e.printStackTrace();
            
        }
    }
    
    });

    primaryStage.show();
    

    
}    
 

}

标签: javajavafxtextfield

解决方案


您当前的代码依次读取每一行,并为每一行将所有标签的文本设置为该文本行。

相反,您需要依次获取每个标签,并将其文本设置为文件的下一行。你可以这样做:

try (BufferedReader reader = new BufferedReader(new FileReader("myfile.txt"))) {
    List.of(label1Text, label2Text, label3Text, label02Text)
        .forEach(label -> {
             try {
                label.setText(reader.readLine());
             } catch (IOException exc) {
                 // handle exception
             }
        });
} 

推荐阅读