2013-05-23 5 views
3

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

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

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 правильным использовать?

+0

Вы не можете использовать JCheckBoxMenuItems для переключения галочки на мыши (потому что GetState/IsSelected всегда возвращает истину в ActionListener прилагается к пункт меню. :( – geowar

ответ

2

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

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

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

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

2

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

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

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

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

2

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

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

    private static final boolean DEFAULT_SOUND_ENABLED = true; 
    
  • Instantiate 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); 
    } 
    
+0

+1, в чем разница между использованием .userRoot() и .node() в отличие от использования .get/.setProperty()? – Aaron

+1

IIUC, первый [рекомендуется] (http: // docs. oracle.com/javase/7/docs/technotes/guides/preferences/overview.html) в статическом контексте. – trashgod

Смежные вопросы