当前位置: 首页 > 知识库问答 >
问题:

让复选框记住它的状态的最佳方法是什么?

相化
2023-03-14

我有一个使用许多复选框的javafx应用程序。选中复选框后,主窗口中将显示一个按钮。复选框设置为“false”将使按钮消失。很简单。

问题是复选框不记得它已被选中,并且应用程序总是以所选复选框开始,如fxml文件中定义的:

<CheckBox fx:id="googleHider" onAction="#hideGoogle" selected="true" text="Google">

由于我在谷歌上找不到任何令人满意的东西,我想出了一个原生的解决方案,设置了一个函数,直接在fxml文档中将复选框的选定状态设置为“真”或“假”,效果非常好。

我只是想知道这是否是一个简单有效的好做法,或者是否有人已经找到或可以想象出一个更优雅或简约的解决方案。(我以前的编程经验更多的是用Python,我不知道它是否显示出来。是否有一种更“Javaian”的方式…?)

boolean isSelected = googleHider.isSelected();


    if (isSelected == false) {

        System.out.println("not selected");
        Path path = Paths.get("src/javafxapplication2/PopupFXML.fxml");
        Charset charset = StandardCharsets.UTF_8;
        String content = new String(Files.readAllBytes(path));
        //following line changes the initial state of the checkbox from "true" to "false"
        content = content.replaceAll("\"#hideGoogle\" selected=\"true\"", "\"#hideGoogle\" selected=\"false\"");
        Files.write(path, content.getBytes(charset));

    }
    else {
        System.out.println("selected");
        Path path = Paths.get("src/javafxapplication2/PopupFXML.fxml");
        Charset charset = StandardCharsets.UTF_8;
        String content = new String(Files.readAllBytes(path));
        // next line changes the state back from "false" to "true" 
        content = content.replaceAll("\"#hideGoogle\" selected=\"false\"", "\"#hideGoogle\" selected=\"true\"");
        Files.write(path, content.getBytes(charset));

    }

共有2个答案

昌砚
2023-03-14

您可以创建共享引用并使用添加值。putBoolean()。

if(ch.isSelected()){             

SharedPreferences settings = getSharedPreferences(PREFRENCES_NAME, 0);
settings.edit().putBoolean("check",true).commit();
}

你可以通过多种方式做到这一点。在下面提供的链接中,您将了解用户会话管理和活动间共享数据的基本概念。

http://www.androidhive.info/2012/08/android-session-management-using-shared-preferences/

张嘉佑
2023-03-14

我肯定会使用设置文件。这样的设置文件不应该位于您的应用程序中,因为您不能总是在执行应用程序时修改它。好的位置是AppData文件夹(在windows上)或用户目录(在linux和mac上)或保存应用程序的文件夹。

我写了一个小库来创建*. Properties-file并将它们保存在AppData文件夹中(如果不在windows上,则保存在用户目录中),您也可以使用它:Common

 类似资料:
  • 问题内容: 有一个简单的方法来放置一个网页上的一个三态复选框,将其绑定到一个布尔模型,以便后者可以采取,或值? 到目前为止,我找到的最接近的解决方案是http://jsfiddle.net/HB7LU/454/,但是在设置初始视图状态时存在缺陷(因为在第一次渲染期间无法获取模型值)。任何其他建议都涉及多个子复选框,并通过监视它们来解决问题。 问题答案: http://jsfiddle.net/xJ

  • 问题内容: 我有一个状态数组,比方说this.state.arr。我想向此状态属性添加一些内容,然后更改更多属性。 选项1 选项2 所以..我知道this.state应该被视为不可变的。但是可以像在选项1中那样使用它还是可以通过它设置状态,还是可以像在选项2中那样使用它,这样总是总是首先在内存中进行复制 问题答案: 使用concat的另一种简单方法:

  • 问题内容: 复制列表的最佳方法是什么?我知道以下方法,哪种更好?还是有另一种方法? 问题答案: 如果要浅拷贝(不复制元素),请使用: 如果要进行深层复制,请使用复制模块:

  • 本文向大家介绍jQuery切换所有复选框选中状态的方法,包括了jQuery切换所有复选框选中状态的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了jQuery切换所有复选框选中状态的方法。分享给大家供大家参考。具体如下: 这段代码非常简单实用,通过链接切换所有checkbox是否选中 希望本文所述对大家的jquery程序设计有所帮助。

  • 我试图做的是,当按下主菜单上的按钮时,将设置菜单拉上(设置菜单作为独立于主菜单的活动实现)。为了简单起见,假设我的主菜单是空的,只有一个按钮打开设置菜单。在设置菜单中,有一个复选框和一个返回到主活动的“完成”按钮。 如何保存复选框并加载它(代码应该是什么,应该放在哪里,为什么等等)?我试着用谷歌搜索它,并试图复制结果,但我似乎无法得到它。到目前为止发生了两件事:没有保存任何内容,或者我的程序崩溃。

  • 问题内容: 我正在使用hibernate+播放!框架在工作中,是否有使用“hibernate”插入大量记录的“最佳实践”?每个文本文件大约有6,000到10,000个,所以我不知道Hibernate是否会扼杀工作或引发异常。 任何建议都让我知道,如果需要进一步说明,请告诉我 问题答案: 在* Java Persistence and Hibernate(Manning)中,并在Pangea的评论之