gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 08:43:45 24 4
gpt4 key购买 nike

免责声明:我是 JavaFX 的新手。

话虽如此,我正在制作一款黑白棋游戏,自然我会制作一款 8x8 棋盘游戏。

我有每个方 block 状态的枚举:空、黑、白。

对于每个棋盘格,我都有一个按钮。我有它,我可以改变颜色,跟踪转弯等。我的问题是,由于以下原因,我觉得我正在把东西拼凑在一起:

我不知道如何正确将枚举存储到它的相关按钮。起初我想我只会有一个包含按钮和枚举类型(白色、黑色、空)的类。但是,当我使用 GridPane 时,我无法添加该对象,只能添加对象本身中的按钮,从而丢失枚举数据。我可以使用便宜的解决方法,只需检查特定按钮的 css 样式,而将所有枚举都忘掉。 (例如,如果颜色是白色,我知道白色玩家有那个特定的方 block )。这似乎是错误的方式。

必须有某种集合或类似的东西,我可以在其中以“JavaFX”方式执行此操作。

如果我不够清楚/准确,我愿意接受提问..

提前致谢。

最佳答案

一个简单的实现是存储userData到一个节点:

button.setUserData(enumValue);

从节点中检索用户数据:

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 样式方法,您可以查看此 tic-tac-toe implementation ,因为每个部分的内部状态的管理在概念上可以是相似的。

关于JavaFX - 将数据存储到相应的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38024579/

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