2011-01-11 10 views
2

私たちはスタンドアロンのJavaスイングアプリを持っています。クライアント側でスタンドアローンアプリに入力された値を記憶する

これで、このユーザーが最後に指定したIPをアプリが覚えておく必要があります。

私はこれまで考えられていたことは(大変だと思いますが) - ログファイルをクライアントマシンに保存し、アプリが起動するたびに最後に提出されたものを読み込むようにします。

提案が参考になります。

ありがとうございます。

答えて

5

ここでは、Java Preferences APIを使用して必要なものを達成するためのチュートリアルを示します。記事から :

のJava環境のAPIは、例えば、ユーザと システムの設定および構成 データを処理するための 体系的な方法を提供しますユーザー設定を保存するために、 は

私はそのプラットフォームに依存しないため、ファイルに出て明示的にデータを書き込む上で、このアプローチを使用することになり、フィールド などの最後の値を覚えています。

0

私は本当にこれをお勧めしますが、レジストリも使用できます。

+0

私はそれを行う方法がわかりません。いくつか指摘していただけますか? – kshtjsnghl

+0

@kshtjsnghl Amirの答えのJava Preferences APiはレジストリを使用しており、比較的簡単に行うことができます。 –

1

それ以上です。それでもHistoryTextFieldのコンポーネントのソースコードはjEditです。 jEditのソースから http://www.jedit.org/api/org/gjt/sp/jedit/gui/HistoryTextField.html

サンプル:

public boolean save(Map<String, HistoryModel> models) 
{ 
    Log.log(Log.MESSAGE,HistoryModel.class,"Saving history"); 
    File file1 = new File(MiscUtilities.constructPath(
     jEdit.getSettingsDirectory(), "#history#save#")); 
    File file2 = new File(MiscUtilities.constructPath(
     jEdit.getSettingsDirectory(), "history")); 
    if(file2.exists() && file2.lastModified() != historyModTime) 
    { 
     Log.log(Log.WARNING,HistoryModel.class,file2 
      + " changed on disk; will not save history"); 
     return false; 
    } 

    jEdit.backupSettingsFile(file2); 

    String lineSep = System.getProperty("line.separator"); 

    BufferedWriter out = null; 

    try 
    { 
     out = new BufferedWriter(new OutputStreamWriter(
      new FileOutputStream(file1), "UTF-8")); 

     if(models != null) 
     { 
      Collection<HistoryModel> values = models.values(); 
      for (HistoryModel model : values) 
      { 
       if(model.getSize() == 0) 
        continue; 

       out.write('['); 
       out.write(StandardUtilities.charsToEscapes(
        model.getName(),TO_ESCAPE)); 
       out.write(']'); 
       out.write(lineSep); 

       for(int i = 0; i < model.getSize(); i++) 
       { 
        out.write(StandardUtilities.charsToEscapes(
         model.getItem(i), 
         TO_ESCAPE)); 
        out.write(lineSep); 
       } 
      } 
     } 

     out.close(); 

     /* to avoid data loss, only do this if the above 
     * completed successfully */ 
     file2.delete(); 
     file1.renameTo(file2); 
    } 
    catch(IOException io) 
    { 
     Log.log(Log.ERROR,HistoryModel.class,io); 
    } 
    finally 
    { 
     IOUtilities.closeQuietly(out); 
    } 

    historyModTime = file2.lastModified(); 
    return true; 
} 
1

それは、Swingアプリケーションですので、あなたはその後、PersistenceServiceを使用してデータを永続化するJava Web Startを使用して起動することがあります。。ここにはdemo. of the PersistenceServiceがあります。

+0

興味深い....... +1 – mKorbel

関連する問題