3

我正在尝试向我的程序添加一个选项菜单,使用 JCheckBoxMenuItems 可以更改选项。无论这些选项的值是什么,都会在程序关闭时保存到文件中。当程序启动并读取设置为布尔值的值时,将读取文件。(即,如果读取的值为 true,则项目旁边会出现一个复选标记,如果值为 false,则不存在复选标记) .

这是我到目前为止所拥有的:

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 是否正确使用?

4

3 回答 3

2

如何设置默认值

您可以使用属性文件来存储默认值。

PropertyChangeListener 使用正确吗?

当程序关闭时,您只需查询每个组件的当前状态,然后将值保存在属性文件中。

于 2013-05-23T16:15:41.893 回答
2

无论这些选项的值是什么,都会在程序关闭时保存到文件中。当程序启动并读取设置为布尔值的值时,将读取文件。(即,如果读取的值为 true,则项目旁边会出现一个复选标记,如果值为 false,则不存在复选标记) .

  • 使用JCheckBoxMenuItem.setSelected(boolean b)isSelected()

  • setSelected在任何Listener添加到之前JCheckBoxMenuItem,因为PropertyChangeListener可以在稍后设置值的情况下触发适当的事件propertyChange,当然取决于您真正想要做什么

  • 用于JButtonComponents Swing Action_ItemListenerActionListener

于 2013-05-23T16:15:46.390 回答
2

用于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);
    }
    
于 2013-05-23T18:25:16.713 回答