2011-01-11 4 views
2

Wir haben eine eigenständige Java Swing App, in der der Benutzer etwas, das er gezeichnet hat, auf einem Drucker drucken kann, indem er seine IP angibt.Merken Sie sich die in der Standalone-App auf der Client-Seite eingegebenen Werte

Jetzt ist die Anforderung, dass die App die IP vergessen muss, die das letzte Mal von diesem Benutzer angegeben wurde.

Was ich bis jetzt denken konnte ist (eine brutale aber) - halten Sie eine Protokolldatei Art von Speicher auf dem Client-Rechner, und dass jedes Mal, wenn die App kommt liest es die letzte eingereicht.

Alle Vorschläge wären hilfreich.

Vielen Dank im Voraus.

Antwort

5

Hier ist ein Tutorial zur Verwendung der Java Preferences API, um zu erreichen, was Sie wollen. Aus dem Artikel:

Der Java-Einstellungen API bietet einen systematisch Benutzer und Systemeinstellung und Konfiguration Daten zu handhaben, zum Beispiel Benutzereinstellungen zu speichern, erinnern den letzten Wert eines Feldes usw.

Ich würde diesen Ansatz über alle Daten aus explizit auf eine Datei, weil seine plattformunabhängig zu schreiben.

0

Ich empfehle das nicht wirklich, aber Sie könnten auch die Registrierung verwenden.

+0

Ich habe keine Ahnung, wie es geht. Können Sie mir bitte ein paar Hinweise geben? – kshtjsnghl

+0

@kshtjsnghl die Java-Einstellungen APi in Amirs Antwort verwendet die Registrierung und macht es relativ einfach, dies zu tun. –

1

Mehr oder weniger das ist es. Noch können Sie den Quellcode für HistoryTextField Komponente von jEdit überprüfen. http://www.jedit.org/api/org/gjt/sp/jedit/gui/HistoryTextField.html

eine Probe aus jEdit. Quelle:

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

Da es sich um eine Swing-App ist, könnten Sie es starten mit Java Web Start die Daten dann bestehen die PersistenceService verwenden. Hier ist ein demo. of the PersistenceService.

+0

interessant ....... +1 – mKorbel

Verwandte Themen