创建一个非空的新文件,但默认情况下包含一些硬编码内容

时间:2014-09-11 20:05:00

标签: xml javafx

我正在学习并在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();
}

我不确定这段代码是否足够,为您提出方法/良好实践。如果没有,请告诉我,我将分享

1 个答案:

答案 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(...)从应用程序类路径中读取它。


随着您获得更多技能,您可能需要调查使用语法高亮编辑器(例如RichTextFXHTML based syntax highlighting editor embedded in a WebView替换基于TextArea的编辑器(但让您的基本应用程序首先使用TextArea)在调查这些其他选项之前)。