2012-04-08 8 views
1

私は、3つのJTextFieldフィールドをメインのデータ入力フィールドとして使用するプログラムを持っています。私はそれを持っているので、ユーザーがプログラムを終了して再び開くと、最後の項目はまだフィールドに残るようにしたい。Java - 入力したフィールドを記憶/保存するプログラム

これをどのように達成できますか?何らかのデータベースが必要なのでしょうか、それとも簡単な方法がありますか?

+0

あなたが尋ねているのは単なるデータの形式ですか? –

+0

@AndrewThompson、私はちょうどユーザーがプログラムを再起動するときにテキストフィールドに入力されたデータが必要です。 – mino

+1

私はあなたが何を望んでいるのか尋ねていませんでした。具体的にする。どの部分に問題がありますか?それは1)プログラムクローズを検出しているか? 2)データの形式。 3)データのデ/シリアライズの方法。 ---データを保存できるダースフォーム、保存できる複数の場所、読み書きが異なる方法、プログラムの終了を検出するトリックがあります。 ***あなたが問題を抱えているものについて絞り込んでください*** –

答えて

2

これを達成するための最も簡単な方法は、テキストフィールドにリスナーを追加し、Javaの環境設定APIを使用することです。あなたはそれを保存したい場合は、アプリケーションを閉じているときにのみ、あなたのアプリケーションにいるWindowListenerを追加し、

方法以前のchangedUpdateの内容をwindowClosingその

に書くことができます。

1

いくつかのオプションがあります。データを構成ファイルに保存し、プログラムの先頭にロードすることをお勧めします。

2

これは、ユーザーごと、またはシステム全体の省エネ情報を扱うことができるので、私はまた、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の基準より良好であってもよいです。私はデータベースのいくつかの並べ替えを必要とする

7

..

番号A D/B 'は3つの文字列' の過剰です。

..より簡単な方法はありますか?

複数の項目があります。

  1. Object serialization
  2. File 3行のテキストです。
  3. XMLEncoder/Decoder
  4. Propertiesファイル。
  5. Preferences API。
  6. アプリJWSを使用して展開するとPersistenceServiceを使用できます。

これは私の頭の上から思い出すことができます。

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) { 
    } 
} 

しかし、この方法でテキストフィールドの値を変更するたびに、それが保存されます。