如何读取RTF文件并在JavaFX中显示
我的目标是从富文本格式的文件中读取内容,然后在JavaFX文本区域中以格式显示内容。我已经用一个纯文本文件(ANSI编码)完成了这项工作。当我尝试读取rtf文件时,它会显示所有文本以及格式符号。是否有一个函数在扫描时解释这些格式符号?这是很难找到一个答案,所以任何帮助是非常感谢 您可以从我的控制器类中看到我当前的文件读取函数:如何读取RTF文件并在JavaFX中显示,javafx,javafx-2,textarea,javafx-8,rtf,Javafx,Javafx 2,Textarea,Javafx 8,Rtf,我的目标是从富文本格式的文件中读取内容,然后在JavaFX文本区域中以格式显示内容。我已经用一个纯文本文件(ANSI编码)完成了这项工作。当我尝试读取rtf文件时,它会显示所有文本以及格式符号。是否有一个函数在扫描时解释这些格式符号?这是很难找到一个答案,所以任何帮助是非常感谢 您可以从我的控制器类中看到我当前的文件读取函数: import java.io.File; import java.io.FileNotFoundException; import java.net.URL; impor
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;
import javafx.scene.control.TextArea;
public class Screen2Controller implements Initializable , ControlledScreen {
ScreensController myController;
//read from file in Dropbox
@FXML
public void displayText() {
try {
//rtf reads text and format characters
Scanner s = new Scanner(new File("C:/Users/EECSDept/Dropbox/EECS Hallway Display/Department Info/rtftest.rtf")).useDelimiter("\\s+");
while (s.hasNext()) {
dinfoTextArea.appendText(s.next() + " "); // read the next token
}
}
catch (FileNotFoundException ex) {
System.err.println("File not found - check file path | "+ex);
}
} //end displaytext
//must reference specific textarea with correct fxid
@FXML TextArea dinfoTextArea;
@Override
public void initialize(URL url, ResourceBundle rb) {
displayText(); //call file reading function
}
public void setScreenParent(ScreensController screenParent){
myController = screenParent;
}
@FXML
private void goToScreen1(ActionEvent event){
//go home
myController.setScreen(ScreensFramework.screen1ID);
}
@FXML
private void goToProgram(ActionEvent event){
myController.setScreen(ScreensFramework.programID);
}
@FXML
private void goToMap(ActionEvent event){
myController.setScreen(ScreensFramework.mapID);
}
} //end screen2controller
这是我的文本区域的输出:
{\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang1033{\fonttbl{\f0\fnil\fcharset0 Calibri;}{*\generator Riched20 6.2.9200}\viewkind4\uc1\pard\sl240\slmult1\f0\fs22\lang9这是一个rtf文档12 3\par\tab选项卡\par\b这是粗体\par}
当我希望将其输出时:
这是一个rtf文档12 3
___标签
这是粗体的我不知道有任何现成的解决方案,但您可以通过结合两种成分来实现这一点:RTF解析器(如)和富文本控件(如)。我可以在这方面帮助你。但是,如果您不需要编辑支持,可以使用而不是RichTextFX。如果您需要编辑支持并希望能够保存编辑的内容,则需要RTF文档生成器,例如。