Запомните значения, введенные в автономном приложении на стороне клиента - PullRequest
2 голосов
/ 11 января 2011

У нас есть отдельное Java-приложение, в котором пользователь может распечатать что-то, что он нарисовал, на принтере, указав свой IP.

Теперь требуется, чтобы приложение запомнило ip, который был последний раз предоставлен этим пользователем.

То, о чем я мог думать до сих пор (хотя и грубо), - сохранять тип файла журнала на клиентском компьютере, и каждый раз, когда приложение запускается, оно читает последнее переданное.

Любые предложения будут полезны.

Заранее спасибо.

Ответы [ 4 ]

5 голосов
/ 11 января 2011

Вот учебник по использованию Java Preferences API для достижения того, что вы хотите. Из статьи:

API настроек Java предоставляет систематический способ обработки пользователя и системные настройки и настройки данные, например сохранить настройки пользователя, запомнить последнее значение поля и т.д.

Я бы использовал этот подход для записи любых данных явно в файл, потому что его независимость от платформы.

1 голос
/ 12 января 2011

Поскольку это приложение Swing., Вы можете запустить его с помощью Java Web Start, а затем сохранить данные с помощью PersistenceService.Вот демоверсия .службы постоянства .

1 голос
/ 11 января 2011

Более или менее, вот и все.Тем не менее, вы можете просмотреть исходный код для HistoryTextField компонента jEdit .http://www.jedit.org/api/org/gjt/sp/jedit/gui/HistoryTextField.html

Образец из источника jEdit:

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;
}
0 голосов
/ 11 января 2011

Я не очень рекомендую это, но вы также можете использовать реестр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...