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

JavaFX -将数据存储到相应的按钮

百里鸿祯
2023-03-14

免责声明:我对JavaFX完全陌生。

尽管如此,我正在制作一个奥赛罗游戏,自然我会有一个8×8的棋盘游戏。

我列举了每个棋盘方格的状态:空、黑、白。

对于每个棋盘格,我都有一个按钮。我有它,我可以改变颜色,跟踪转弯,等等。我的问题是,我觉得我好像是为了以下原因在一起破解东西:

我不知道如何正确地将枚举存储到它的相关按钮。起初我想我会有一个保存按钮和枚举类型(白色、黑色、空)的类。但是,当我使用GridPane时,我不能添加这个对象,而只能添加对象本身中的按钮,从而丢失枚举数据。我可以使用一种廉价的工作方法,只需检查特定按钮的css样式,然后一起忘记枚举。(例如,如果颜色是白色,我知道白色播放器有那个特定的正方形)。这似乎是错误的方式。

一定有某种收藏或类似的东西,我可以用“JavaFX”的方式来做到这一点。

如果我不够清晰/精确,我会接受问题。

提前感谢。

共有1个答案

穆正青
2023-03-14

一个简单的实现是将用户数据存储到一个节点:

button.setUserData(enumValue);

从节点检索userData:

MyEnum enumValue = (MyEnum) button.getUserData(); 

另一种处理方法是通过子类化将自定义状态添加到按钮:

class Square extends Button {
    private ObjectProperty<SquareState> state = new SimpleObjectProperty(
        SquareState.EMPTY
    );

    public ObjectProperty<SquareState> stateProperty() {
        return state;
    }

    public SquareState getState() {
        return state.get();
    }

    public void setState(SquareState newState) {
        state.set(newState);
    }
}

对于更复杂的 mvc 样式方法,其中每个项目都有一个外观和一个内部状态,您可以查看此井字棋实现,因为每个部分的内部状态的管理在概念上可能是相似的。

 类似资料:
  • 问题内容: 有人可以告诉我,在以下情况下如何进行? 接收文件(MS文件,ODS,PDF) 通过Apache Tika提取公元核心元数据+通过jackrabbit-content-extractors提取内容 使用Jackrabbit将文档(内容)及其元数据存储到存储库中 ? 检索文档+元数据 我对第3点和第4点感兴趣… 详细信息:该应用程序正在以交互方式处理文档(一些分析-语言检测,单词计数等。+

  • 告诉我如何在Azure存储帐户中存储PostgreSQL数据库数据。PostgreSQL部署到Azure容器实例。当我重新启动Azure容器实例时,所有数据都会消失。Dockerfile 来自Timescale/Timescaledb:Latest-PG12 az容器创建--resource-group test-env--name test-env--image test-env.azureca

  • 我是Room数据库的新手,我有来自MSGraph API的JSON响应,这是日历事件的列表。 我想将此响应存储在Room数据库中。 来自改型数据的示例响应 我搜索了论坛,但没有得到任何正确的解决方案。我想将此响应存储在Room数据库中。谁能帮我找到正确的方法。 谢谢

  • 我试图将一个Azure Blob存储容器挂载到一个DataBricks实例上,虽然挂载确实有效,但它似乎没有使用存储容器。 我在这里漏掉了什么?

  • 我希望使用枚举将值映射到数据库表行: 我想使用status=active从FE中搜索和获取状态,但只存储到数据库行字段中的符号A。 我如何将枚举键A存储到数据库中?

  • 问题内容: 我正在尝试通过API将bigquery数据导出到Google云存储桶。我从这里https://cloud.google.com/bigquery/docs/exporting- data 修改了代码段 由于数据是嵌套的,因此无法与“ JSON”交换格式,因此无法将其与“ gs://mybucket/export_*.json”导出为CSV和gcsUrl。但是错误消息告诉我以下问题: 有