私は、3つのJTextField
フィールドをメインのデータ入力フィールドとして使用するプログラムを持っています。私はそれを持っているので、ユーザーがプログラムを終了して再び開くと、最後の項目はまだフィールドに残るようにしたい。Java - 入力したフィールドを記憶/保存するプログラム
これをどのように達成できますか?何らかのデータベースが必要なのでしょうか、それとも簡単な方法がありますか?
私は、3つのJTextField
フィールドをメインのデータ入力フィールドとして使用するプログラムを持っています。私はそれを持っているので、ユーザーがプログラムを終了して再び開くと、最後の項目はまだフィールドに残るようにしたい。Java - 入力したフィールドを記憶/保存するプログラム
これをどのように達成できますか?何らかのデータベースが必要なのでしょうか、それとも簡単な方法がありますか?
これを達成するための最も簡単な方法は、テキストフィールドにリスナーを追加し、Javaの環境設定APIを使用することです。あなたはそれを保存したい場合は、アプリケーションを閉じているときにのみ、あなたのアプリケーションにいるWindowListenerを追加し、
方法以前のchangedUpdateの内容をwindowClosingその
に書くことができます。
いくつかのオプションがあります。データを構成ファイルに保存し、プログラムの先頭にロードすることをお勧めします。
あなたがそれらをシリアル化してファイルに格納することができます:http://www.tutorialspoint.com/java/java_serialization.htm
これは、ユーザーごと、またはシステム全体の省エネ情報を扱うことができるので、私はまた、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の基準より良好であってもよいです。私はデータベースのいくつかの並べ替えを必要とする
..
番号A D/B 'は3つの文字列' の過剰です。
..より簡単な方法はありますか?
複数の項目があります。
File
3行のテキストです。Properties
ファイル。Preferences
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) {
}
}
しかし、この方法でテキストフィールドの値を変更するたびに、それが保存されます。
あなたが尋ねているのは単なるデータの形式ですか? –
@AndrewThompson、私はちょうどユーザーがプログラムを再起動するときにテキストフィールドに入力されたデータが必要です。 – mino
私はあなたが何を望んでいるのか尋ねていませんでした。具体的にする。どの部分に問題がありますか?それは1)プログラムクローズを検出しているか? 2)データの形式。 3)データのデ/シリアライズの方法。 ---データを保存できるダースフォーム、保存できる複数の場所、読み書きが異なる方法、プログラムの終了を検出するトリックがあります。 ***あなたが問題を抱えているものについて絞り込んでください*** –