我正在学习并在JavaFX中做一个简单的文本/ XML编辑器。我有文件菜单" New"在TabPane
上创建新标签的操作。现在我想扩展它,以便当用户创建一个新选项卡(最终将保存到文件中)时,该选项卡预先填充了一些最小内容。
为了举例:
<?xml version="1.0" encoding="UTF-8"?>
<root>
</root>
实现这样的目标的推荐方法是什么?
例如,我可以在包含上述文本的项目结构中创建一个新文件,然后每当我创建&#39;一个新文件我实际上打开它并呈现它就像新的一样。但后来我将不得不修改我的&#34; Saving&#34;将选项卡保存为新文件的逻辑,而不是覆盖现有文件。 所以这似乎不是一个好方法。
我的编辑器类有以下内容:
public class Editor implements Content {
public TextArea textArea = new TextArea();
public String filename = null;
public TextArea getRoot() {
return textArea;
}
public void setText(String text) {
textArea.setText(text);
}
public String getText() {
return textArea.getText();
}
}
并实现这个简单的界面:
public interface Content {
public Node getRoot();
}
我不确定这段代码是否足够,为您提出方法/良好实践。如果没有,请告诉我,我将分享
答案 0 :(得分:1)
要使用硬编码字符串,只需执行以下操作:
private static final String DEFAULT_TEXT = "<?xml versio...";
. . .
Editor editor = new Editor();
editor.setText(DEFAULT_TEXT);
如果您想支持默认文本的可配置模板,您可以将模板文本放在资源文本文件中(例如utf-8编码)并从中读取:
String content = new String(Files.readAllBytes("template.xml"), "utf-8");
上面使用文件,但是从文件系统中,但您也可以使用getClass().getResourceAsStream(...)
从应用程序类路径中读取它。
随着您获得更多技能,您可能需要调查使用语法高亮编辑器(例如RichTextFX或HTML based syntax highlighting editor embedded in a WebView替换基于TextArea的编辑器(但让您的基本应用程序首先使用TextArea)在调查这些其他选项之前)。