gpt4 book ai didi

java - 检测对象是否保存在 javafx 桌面应用程序中的最佳方法是什么?

转载 作者:行者123 更新时间:2023-11-29 04:58:29 25 4
gpt4 key购买 nike

我目前正在开发 javafx 桌面应用程序。它包含两个 observableList<Item> s和两个HashMap<String,Double>秒。我目前正在开发 menuBar ,其中包含这些 menuItem s,即 Open , New , SaveSave As .

考虑我启动桌面应用程序并添加一些 Item 的情况。到 observableList<Item> .然后突然之间,我想打任何一个 menuItem上面列出了。在开始新的工作流程(新菜单项)之前,我要检查我的程序的第一件事是是否需要保存当前的工作流程

目前我有以下方法,但我认为它看起来非常笨拙且效率低下。我开发的方法是设置一个变量private static final boolean isSaved = false;

然后在两个 observableList 中,我向它们添加了一个 Listener:

    obslist1.addListener(new ListChangeListener<Item>(){
@Override
public void onChanged(ListChangeListener.Change change) {
isSaved = false;
}
});

obslist2 的代码是相同的。和 isSaved变量设置为 true仅当用户实际按下 SaveSave As菜单项。

我发现我的方法非常笨拙且效率低下。有更好的方法吗?

最佳答案

你可以做类似的事情

BooleanProperty saved = new SimpleBooleanProperty();
InvalidationListener savedListener = obs -> saved.set(false);

然后

private void save() {
// save the data...

// mark data as saved:
saved.set(true);
}

obslist1.addListener(savedListener);
obslist2.addListener(savedListener);

anythingElseThatMightChangeAndIsImportant.addListener(savedListener);

你的保存按钮和菜单项等可以做

saveButton.disableProperty().bind(saved);

关于java - 检测对象是否保存在 javafx 桌面应用程序中的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32868563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com