当前位置: 首页 > 知识库问答 >
问题:

JavaFX从文本文件读取并在文本中显示

朱宏爽
2023-03-14

我对JavaFX和JavaFX Scene Builder是新手,几个星期以来一直在研究并试图弄清楚如何简单地从文本文件中读取并在文本中显示其内容。我的controller类中有一个很好的文件读取功能,但我不知道如何将文本文件显示到fxml文档中的文本区域。我已经学会了如何单击按钮并使文件显示在文本区域中,但我希望GUI加载后立即在文本区域中显示内容。如果任何人有一个想法如何去做这件事,你的帮助将非常感谢!

最后一个按钮和文本区域(靠近FXML文档的末尾)是将文本文件打印到netbeans的按钮,也是希望文本被解析的文本区域。

import java.io.File;
import java.io.FileNotFoundException;
import java.net.URL;
import java.util.ResourceBundle;
import java.util.Scanner;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;


public class Screen2Controller implements Initializable , ControlledScreen {

    ScreensController myController;

    @Override
    public void initialize(URL url, ResourceBundle rb) {
        // TODO
    }

    public void setScreenParent(ScreensController screenParent){
        myController = screenParent;
    }

    @FXML
    private void goToScreen1(ActionEvent event){
       myController.setScreen(ScreensFramework.screen1ID);
    }

    @FXML
    private void goToProgram(ActionEvent event){
       myController.setScreen(ScreensFramework.programID);
    }

    private void displayText() throws FileNotFoundException {
        Scanner s = new Scanner (new File ("EECS.txt")).useDelimiter("\\s+");
        while (s.hasNext()) {
            if (s.hasNextInt()) { // check if next token is an int
                System.out.print(s.nextInt()+" "); // display the found integer
            }       
            else {
                System.out.print(s.next()+" "); // else read the next token
            }
        } //end while
    } //end main   
} //end screen2controller

FXML

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.image.*?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.text.*?>

<AnchorPane id="AnchorPane" prefHeight="650.0" prefWidth="1350.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="departmentdisplay.Screen2Controller">
  <children>
      <ImageView fitHeight="783.0" fitWidth="1398.0" layoutX="-4.0" layoutY="-80.0" pickOnBounds="true" preserveRatio="true">
         <image>
            <Image url="@nexus_blue.jpg" />
         </image>
      </ImageView>
      <ImageView fitHeight="149.0" fitWidth="1322.0" layoutX="20.0" layoutY="7.0" pickOnBounds="true" preserveRatio="true">
         <image>
            <Image url="@departinfohead.png" />
         </image>
      </ImageView>
  <Button layoutX="49.0" layoutY="26.0" mnemonicParsing="false" onAction="#goToScreen1" prefHeight="111.0" prefWidth="121.0">
         <graphic>
            <ImageView fitHeight="100.0" fitWidth="150.0" pickOnBounds="true" preserveRatio="true">
               <image>
                  <Image url="@backarrow.png" />
               </image>
            </ImageView>
         </graphic></Button>
      <SplitPane dividerPositions="0.20765027322404372" layoutX="928.0" layoutY="168.0" orientation="VERTICAL" prefHeight="185.0" prefWidth="415.0">
         <items>
            <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="95.0" prefWidth="183.0">
               <children>
                  <Label layoutX="14.0" layoutY="23.0" prefHeight="96.0" prefWidth="158.0" text="                      Map" textAlignment="CENTER" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
                     <font>
                        <Font name="Arial Black" size="24.0" />
                     </font>
                  </Label>
               </children>
            </AnchorPane>
            <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="176.0" prefWidth="158.0">
               <children>
                  <TextArea prefHeight="151.0" prefWidth="242.0" text="Image" wrapText="true" AnchorPane.bottomAnchor="-7.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">       
                  </TextArea>
               </children>
            </AnchorPane>
         </items>
      </SplitPane>
      <SplitPane dividerPositions="0.08057851239669421" layoutX="20.0" layoutY="168.0" orientation="VERTICAL" prefHeight="480.0" prefWidth="898.0">
         <items>
            <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="100.0" prefWidth="160.0">
               <children>
                  <Label layoutX="369.0" prefHeight="29.0" prefWidth="1062.0" text="                  Electrical Engineering &amp; Computer Science" textAlignment="CENTER" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
                     <font>
                        <Font name="Arial Black" size="24.0" />
                     </font>
                  </Label>
               </children>
            </AnchorPane>
            <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="100.0" prefWidth="160.0">
               <children>
                  <TextArea fx:id="dinfoTextArea" layoutY="3.0" prefHeight="453.0" prefWidth="896.0" 
                 text="Text file text goes here" wrapText="true"
                  AnchorPane.bottomAnchor="-14.0" AnchorPane.leftAnchor="0.0"
                   AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="3.0">
                     </TextArea>
               </children>
            </AnchorPane>
         </items>
      </SplitPane>
      <SplitPane dividerPositions="0.13286713286713286" layoutX="930.0" layoutY="365.0" orientation="VERTICAL" prefHeight="282.0" prefWidth="413.0">
         <items>
            <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="50.0" prefWidth="221.0">
               <children>
                  <Label layoutX="92.0" layoutY="12.0" prefHeight="29.0" prefWidth="263.0" text="                  Programs" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
                     <font>
                        <Font name="Arial Black" size="24.0" />
                     </font>
                  </Label>
              <Button layoutX="25.0" mnemonicParsing="false" onAction="#displayText" prefHeight="34.0" prefWidth="102.0" text="Go To Programs" />
               </children>
            </AnchorPane>
            <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="176.0" prefWidth="158.0">
               <children>
                  <TextArea layoutX="57.0" layoutY="-6.0" prefHeight="339.0" prefWidth="240.0"
                      text="Lorem ipsum " wrapText="true" AnchorPane.bottomAnchor="0.0"
                      AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" 
                      AnchorPane.topAnchor="0.0"> 
                  </TextArea>
               </children>
            </AnchorPane>
         </items>
      </SplitPane>
  </children>
</AnchorPane>

共有1个答案

越俊艾
2023-03-14
      @FXML TextArea YourTextArea; //i think you already know about this

@Override
public void initialize(URL url, ResourceBundle rb) {
    try {
        Scanner s = new Scanner(new File("EECS.txt")).useDelimiter("\\s+");
        while (s.hasNext()) {
            if (s.hasNextInt()) { // check if next token is an int
                YourTextArea.appendText(s.nextInt() + " "); // display the found integer
            } else {
               YourTextArea.appendText(s.next() + " "); // else read the next token
            }
        }
    } catch (FileNotFoundException ex) {
        System.err.println(ex);
    }
}

或者您可以简单地从initialize()调用按钮的'on action'方法。如。

    @FXML public void displayTextOnButtonClick(){ //suppose this method gets fired when you click button

}

@FXML public void initialize(URL url, ResourceBundle rb) {
   displayTextOnButtonClick();
} 
 类似资料:
  • 请帮助我,因为我是java脚本的新手。我想显示一个文本文件的数据,它在“D:\vikas.txt”路径到一个文本框。如果有人能提供我一个完整的代码,这将是非常有帮助的。我使用的是谷歌chrome浏览器。如果你需要任何其他信息,请告诉我。 谢谢

  • 问题内容: 有什么方法可以读取文本文件并将内容存储在Jtable中?我有一个文本文件,其中包含有关某些过程的某些信息。就像一个具有列和各自值的表。是否可以获取.txt文件的内容并以Jtable的形式显示?我正在使用Eclipse和Window Builder。任何帮助将不胜感激。谢谢! 问题答案: 我将研究Oracle的教程: 读/写文本文件 JTable教程 当从文本文件中获取数据时,您需要将其

  • 本文向大家介绍详解Java读取本地文件并显示在JSP文件中,包括了详解Java读取本地文件并显示在JSP文件中的使用技巧和注意事项,需要的朋友参考一下 详解Java读取本地文件并显示在JSP文件中        当我们初学IMG标签时,我们知道通过设置img标签的src属性,能够在页面中显示想要展示的图片。其中src的值,可以是磁盘目录上的绝对,也可以是项目下的相对路径,还可以是网络上的图片路径。

  • 问题内容: 我们如何从文本文件读取数据并将其存储在String变量中? 是否有可能在方法中传递文件名,并且它将返回字符串,即文件中的文本。 我必须导入哪种工具?声明列表会很棒。 问题答案: 这些是必需的进口: 这是一种方法,通过将文件名作为参数传递给它,您可以从文件中进行读取,如下所示:

  • 我正在编写一个程序,读取文本文件,并显示第一个学生的姓名、年级和全班平均成绩。对于上面给出的文件,结果如下:类中的第一个是Ahmad Hamwi has 16.00,类的平均值是12.25这是我试图读取的W文本文件 这就是我一直犯的错误 我已经试了几个小时了。我知道错误在第37行。这可能与类型有关。我尝试了int和浮动,但一样。