我试图在我的程序中添加一个选项菜单,可以使用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是否正确使用?
答案 0 :(得分:2)
如何设置默认值
您可以使用属性文件存储默认值。
PropertyChangeListener是否正确使用?
当程序关闭时,您只需查询每个组件的当前状态,然后将该值保存在属性文件中。
答案 1 :(得分:2)
无论这些选项的值是什么,都将保存到文件中 该计划结束。程序启动时将读取该文件 设置为布尔读入的值。(即,下一个出现复选标记 如果读入的值为真,则为一个项目,如果是,则为一个项目 价值是假的。)
使用JCheckBoxMenuItem.setSelected(boolean b),isSelected()
setSelected
添加Listener
之前 JCheckBoxMenuItem
,因为PropertyChangeListener
可以在值propertyChange
的情况下从Swing Action
触发正确的事件稍后设置,肯定取决于你真正想做什么
我会使用ItemListener
,ActionListener
,{{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);
}