JCheckBoxMenuItem默认值

时间:2013-05-23 15:56:13

标签: java swing jcheckbox jmenubar propertychangelistener

我试图在我的程序中添加一个选项菜单,可以使用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 个答案:

答案 0 :(得分:2)

  

如何设置默认值

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

  

PropertyChangeListener是否正确使用?

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

答案 1 :(得分:2)

  

无论这些选项的值是什么,都将保存到文件中   该计划结束。程序启动时将读取该文件   设置为布尔读入的值。(即,下一个出现复选标记   如果读入的值为真,则为一个项目,如果是,则为一个项目   价值是假的。)

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

  • setSelected添加Listener之前
  • JCheckBoxMenuItem,因为PropertyChangeListener可以在值propertyChange的情况下从Swing Action触发正确的事件稍后设置,肯定取决于你真正想做什么

  • 我会使用ItemListenerActionListener,{{1}}来JButtonComponents

答案 2 :(得分:2)

使用java.util.Preferences来保持soundEnabled州;引用了一个完整的例子here。概括地说,

  • 定义默认初始状态:

    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);
    }