文本编辑器Java Swing actionListener保存文件

鹅卵石

问题我正在使用Swing在Java中创建文本编辑器。我有一个使用此方法保存文件的按钮:

private void save() {
        if (savedAs) {
            try {
                PrintWriter fout = new PrintWriter(savedAsFile);
                fout.print(textArea.getText());
                fout.close();
                this.setTitle("Text Editor - " + fileName);
                saved = true;
            } catch (FileNotFoundException ex) {
                Logger.getLogger(TextEditorFrame.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

savedAs布尔只有当第一次创建的文件真实,否则它只是保存它不保存为文件选择打开。当我使用按钮时,一切正常,但是,当我save()从按键绑定中调用方法时,由于以下方法,它可以保存:

private void textAreaKeyTyped(java.awt.event.KeyEvent evt) {                                  
    this.setTitle("Text Editor - *" + fileName);
    saved = false;
}         

它将星号重新添加到标题上。我希望它显示时不带星号,因为它已保存。当动作监听器调用save方法时,如何确保textAreaKeyTyped方法不会拾取输入。

按键绑定动作侦听器:

public void initBindings() {
    textArea.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(
            KeyEvent.VK_S, java.awt.event.InputEvent.CTRL_DOWN_MASK), "actionMapKey");
    textArea.getActionMap().put("actionMapKey", new AbstractAction() {
        @Override
        public void actionPerformed(ActionEvent e) {
            save();
        }
    });
}

因为我认为文本区域会拾取由用户键入CTRL + S引起的输入,因此将星号放在标题中。

谢谢!

B队

最可靠的方法是保留一个String lastSaved对象。

当您这样save()做时:

lastSaved = textArea.getText();

然后在你textAreaKeyTyped()做:

boolean unchanged = textArea.getText.equals(lastSaved);

if (!unchanged) {
   // add *, enable save, etc
} else {
   // remove *, disable save, etc
}

这将带来额外的好处,即如果用户撤消其更改,其文档将返回到“未修改”状态。

我实际上将创建一个updateSaveState()包含该代码的方法,并保存和修改后的回调调用updateSaveState(),在其中删除重复的代码,并将窗口标题等的所有逻辑都放在一个位置。

我也很想创建一个isModified()返回!textArea.getText.equals(lastSaved)并完全删除已保存标志方法任何想知道的都可以打电话isModified()

请注意,在这种情况下,在收到keyTyped时将不会应用编辑。如果您执行aSwingUtilities.invokeLater来将您的处理延迟到处理完按键之后,则应该可以解决此问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

html 文本编辑器值未保存

来自分类Dev

如何使用文本编辑器编写HTML文件

来自分类Dev

文本编辑器可处理超大文件

来自分类Dev

不同文本编辑器的文件缩进更改

来自分类Dev

文本编辑器可处理超大文件

来自分类Dev

不同文本编辑器的文件缩进更改

来自分类Dev

如何运行与文本编辑器关联的CMD文件

来自分类Dev

Python Tkinter文本编辑器不会将字体保存到文本文件

来自分类Dev

Python Tkinter文本编辑器不会将字体保存到文本文件

来自分类Dev

在文本编辑器中保存exe文件时会发生什么?

来自分类Dev

文本编辑器可编辑大(4.3 GB)的纯文本文件

来自分类Dev

文本编辑器可编辑大(4.3 GB)的纯文本文件

来自分类Dev

Java Swing多个ActionListener

来自分类Dev

Java Swing、ActionListener

来自分类Dev

如何使用文本编辑器编辑〜/ .git / config文件?

来自分类Dev

如何使用文本编辑器编辑〜/ .git / config文件?

来自分类Dev

使用文本编辑器编辑的sudoers文件-现在无法运行sudo

来自分类Dev

授予自己使用var / www / drupal上的文本编辑器编辑文件的权限

来自分类Dev

使用nano命令时,如何在文本编辑器而不是终端中编辑文件?

来自分类Dev

如何以 root 身份在 GUI 文本编辑器中编辑文件?

来自分类Dev

文本编辑器在删除字符时在保存时追加文本

来自分类Dev

如何检查Visual Studio中的文本编辑器视图是否已修改(未保存)?

来自分类Dev

通常,使用IDE编译时,程序的文件大小是否比普通文本编辑器保存的文件大?

来自分类Dev

使用文本编辑器打开加密文件是否安全?

来自分类Dev

文本编辑器打开的Python脚本可执行文件

来自分类Dev

在自定义Eclipse文本编辑器插件中打开之前处理文件

来自分类Dev

在文本编辑器中按文件名切换到选项卡

来自分类Dev

在Azure门户中的Azure Shell文本编辑器中在哪里创建文件?

来自分类Dev

为什么文本编辑器认为此文件为UTF-8?

Related 相关文章

  1. 1

    html 文本编辑器值未保存

  2. 2

    如何使用文本编辑器编写HTML文件

  3. 3

    文本编辑器可处理超大文件

  4. 4

    不同文本编辑器的文件缩进更改

  5. 5

    文本编辑器可处理超大文件

  6. 6

    不同文本编辑器的文件缩进更改

  7. 7

    如何运行与文本编辑器关联的CMD文件

  8. 8

    Python Tkinter文本编辑器不会将字体保存到文本文件

  9. 9

    Python Tkinter文本编辑器不会将字体保存到文本文件

  10. 10

    在文本编辑器中保存exe文件时会发生什么?

  11. 11

    文本编辑器可编辑大(4.3 GB)的纯文本文件

  12. 12

    文本编辑器可编辑大(4.3 GB)的纯文本文件

  13. 13

    Java Swing多个ActionListener

  14. 14

    Java Swing、ActionListener

  15. 15

    如何使用文本编辑器编辑〜/ .git / config文件?

  16. 16

    如何使用文本编辑器编辑〜/ .git / config文件?

  17. 17

    使用文本编辑器编辑的sudoers文件-现在无法运行sudo

  18. 18

    授予自己使用var / www / drupal上的文本编辑器编辑文件的权限

  19. 19

    使用nano命令时,如何在文本编辑器而不是终端中编辑文件?

  20. 20

    如何以 root 身份在 GUI 文本编辑器中编辑文件?

  21. 21

    文本编辑器在删除字符时在保存时追加文本

  22. 22

    如何检查Visual Studio中的文本编辑器视图是否已修改(未保存)?

  23. 23

    通常,使用IDE编译时,程序的文件大小是否比普通文本编辑器保存的文件大?

  24. 24

    使用文本编辑器打开加密文件是否安全?

  25. 25

    文本编辑器打开的Python脚本可执行文件

  26. 26

    在自定义Eclipse文本编辑器插件中打开之前处理文件

  27. 27

    在文本编辑器中按文件名切换到选项卡

  28. 28

    在Azure门户中的Azure Shell文本编辑器中在哪里创建文件?

  29. 29

    为什么文本编辑器认为此文件为UTF-8?

热门标签

归档