【问题标题】:Java - Program which remembers/saves entered fieldsJava - 记住/保存输入字段的程序
【发布时间】:2012-04-08 09:28:18
【问题描述】:

我有一个程序使用三个JTextField 字段作为主要数据输入字段。我想拥有它,这样当用户终止程序然后再次打开它时,他们的最后一个条目仍然会出现在字段中。

我怎样才能做到这一点?我需要某种数据库还是有更简单的方法?

【问题讨论】:

  • 你问的只是数据的形式?
  • @AndrewThompson,我只想在用户重新启动程序时将数据输入到那里的文本字段中。
  • 我不是在问你“想要”什么。请明确点。你哪部分有问题?是1)检测程序关闭。 2)数据的形式。 3)反序列化数据的方式。 --- 数据可以存储在十几种形式中,可以存储多个位置,读取/写入的不同方式,检测程序退出的技巧。 尝试缩小范围,了解您遇到的问题。

标签: java swing save jtextfield


【解决方案1】:

我需要某种数据库吗..

没有。 A D/B 对于“3 个字符串”来说太过分了。

..或者有更简单的方法吗?

不止一个。

  1. Object serialization
  2. File 包含 3 行文本。
  3. XMLEncoder/Decoder.
  4. Properties 文件。
  5. Preferences API。
  6. 一个应用程序。使用JWS 部署可以使用PersistenceService

这就是我能想到的全部内容。

【讨论】:

    【解决方案2】:

    实现此目的的最简单方法是向文本字段添加侦听器并使用 java 首选项 api:

    textField = new JTextField();
        // set document listener
        textField.getDocument().addDocumentListener(new MyListener());
        // get the preferences associated with your application
        Preferences prefs = Preferences.userRoot().node("unique_string_representing_your_preferences");
        // load previous value
        textField.setText(prefs.get("your_preference_unique_key", ""));
    
    class MyListener implements DocumentListener {
    
        @Override
        public void changedUpdate(DocumentEvent event) {
            final Document document = event.getDocument();
            // get the preferences associated with your application
            Preferences prefs = Preferences.userRoot().node("unique_string_representing_your_preferences");
            try {
                // save textfield value in the preferences object
                prefs.put("your_preference_unique_key", document.getText(0, document.getLength()));
            } catch (BadLocationException e) {
                e.printStackTrace();
            }
        }
    
        @Override
        public void insertUpdate(DocumentEvent arg0) {
        }
    
        @Override
        public void removeUpdate(DocumentEvent arg0) {
        }
    }
    

    但是以这种方式每次更改文本字段中的值时都会保存它。如果你只想在应用程序关闭时保存它,你可以在你的应用程序中添加一个 WindowListener 并写入它的

    窗口关闭

    获取上一个changedUpdate的内容。

    【讨论】:

      【解决方案3】:

      我还建议查看Java Preferences 系统,因为它可以处理每个用户或整个系统的保存信息。

      举个例子:

      void writeMethod() {
          Preferences prefs = Preferences.userNodeForPackage(this);
          prefs.put("key", "value");
      }
      
      void readMethodInSameClass() {
          Preferences prefs = Preferences.userNodeForPackage(this);
          prefs.get("key");
      }
      

      This description 可能比 API 参考更好。

      【讨论】:

        【解决方案4】:

        有一些选项,您可能希望将数据保存到配置文件并在程序开始时加载它。

        【讨论】:

          【解决方案5】:

          您可以将它们序列化并将它们存储在一个文件中:http://www.tutorialspoint.com/java/java_serialization.htm

          【讨论】:

            猜你喜欢
            • 2015-11-20
            • 1970-01-01
            • 2011-08-15
            • 1970-01-01
            • 2011-12-09
            • 1970-01-01
            • 1970-01-01
            • 2012-04-05
            • 2012-07-13
            相关资源
            最近更新 更多