gpt4 book ai didi

java - 在 javafx 中双向绑定(bind) ToggleGroup

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:13:39 26 4
gpt4 key购买 nike

想象一下有一个定义鼠标模式的枚举:

public enum MouseMode {
SELECTION,
EDITING,
DELETING }

想象一下有一个由 3 个按钮组成的切换组:

    ToggleButton selection = new ToggleButton("Select");
ToggleButton editing = new ToggleButton("Edit");
ToggleButton deleting = new ToggleButton("Delete");
ToggleGroup mouseSelection = new ToggleGroup();

我想要一个字段 MouseMode currentMode 双向链接到切换组。每当设置切换时,currentMode 都会相应地切换,但如果某些外部进程更改了 currentMode(可能是按键),则切换组也会相应地进行调整。

我可以用 2 个监听器来做到这一点,但我想知道是否有办法创建自定义双向映射。

最佳答案

我认为没有办法直接做到这一点。虽然是通用的

Bindings.bindBidirectional(Property<S> property1, Property<T> property2, Function<S,T> mapping, Function<T,S> inverseMapping)

可能是对 API 的一个很好的补充,即使在这种情况下也无济于事,因为 ToggleGroupselectedProperty是只读的(因为选择需要在每个 TogglesetSelected(...) 方法被调用时处理,以及 ToggleGroupselectedProperty )。

在这种情况下,使用几个监听器是可行的方法。

最接近“自定义双向 map ”的是

Bindings.bindBiDirectional(StringProperty stringProperty, ObjectProperty<T> otherProperty, StringConverter<T> converter)

方法。如果你有一个(可写的)ObjectProperty<S>和(可写)ObjectProperty<T>理论上你可以使用两个双向绑定(bind)和一个中间 StringProperty将它们绑定(bind)在一起。在实践中,这几乎总是比仅使用两个监听器需要更多的代码,而且效率也较低。

关于java - 在 javafx 中双向绑定(bind) ToggleGroup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23303087/

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