Значение по умолчанию для JCheckBoxMenuItem

Я пытаюсь добавить меню параметров в мою программу, с возможностью изменения параметров с помощью JCheckBoxMenuItems. Независимо от значения этих параметров, они будут сохранены в файл при закрытии программы. Файл будет прочитан при запуске программы, и значения, установленные на логическое значение, будут считаны. (Т. Е. Рядом с элементом появляется галочка, если считываемое значение истинно, и нет, если значение ложно),

Это то, что я до сих пор:

boolean soundEnabled = true;

JMenu fmOptionsMenu = new JMenu("Options");
    fileMenu.add(fmOptionsMenu);

    JCheckBoxMenuItem omSoundEnable = new JCheckBoxMenuItem("Enable Sound");
    omSoundEnable.addPropertyChangeListener(new PropertyChangeListener() {
        public void propertyChange(PropertyChangeEvent arg0) {
            soundEnabled = !soundEnabled;
        }
    });
    fmOptionsMenu.add(omSoundEnable);

Как я могу установить значения по умолчанию, и является ли PropertyChangeListener правильным для использования?

3 ответа

Решение

Независимо от значения этих параметров, они будут сохранены в файл при закрытии программы. Файл будет прочитан при запуске программы, и значения, установленные на логическое значение, будут считаны. (Т. Е. Рядом с элементом появляется галочка, если считываемое значение истинно, и нет, если значение ложно),

  • использовать JCheckBoxMenuItem.setSelected(логическое значение b), isSelected()

  • setSelected перед любым из Listener Добавлено в JCheckBoxMenuItem, так как PropertyChangeListener может запустить надлежащее событие из propertyChange в случае, если значение устанавливается позже, конечно, зависит от того, что вы действительно хотите сделать

  • Я бы использовал Swing Action, ItemListener, ActionListener для JButtonComponents

Использование java.util.Preferences чтобы сохранить soundEnabled государство; полный пример приведен здесь. В общих чертах,

  • Определите начальное состояние по умолчанию:

    private static final boolean DEFAULT_SOUND_ENABLED = true;
    
  • иллюстрировать примерами Preferences:

    Preferences p = Preferences.userRoot().node("org").node("foo").node("Bar");
    
  • Получить предпочтительное состояние или определенный по умолчанию:

    public static boolean getSoundEnabled() {
        return p.getBoolean("soundEnabled", DEFAULT_SOUND_ENABLED);
    }
    ...
    private boolean soundEnabled = getSoundEnabled();
    
  • Сохраните новое значение, вызываемое из прослушивателя меню:

    public static void putSoundEnabled(boolean soundEnabled) {
        p.putBoolean("soundEnabled", soundEnabled);
    }
    

Как я могу установить значения по умолчанию

Вы можете использовать файл свойств для хранения значений по умолчанию.

PropertyChangeListener правильный, чтобы использовать?

Когда программа закрывается, вы можете просто запросить текущее состояние каждого компонента, а затем сохранить значение в файле свойств.

Другие вопросы по тегам