问题标签 [reactfx]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
131 浏览

java - ReactFX 事件流和重放行为?

ReactFX 中是否有任何功能EventStream可以缓存最后一个值,以便可以将其重播给新订阅者?RxJavaObservable有很多程序来完成这些任务。我希望它EventStream可能具有类似的功能......除非我忽略了我不想在 GUI 中执行此操作的原因,并且我应该坚持仅发布范例。

0 投票
1 回答
506 浏览

javafx - UndoFX:撤消/重做记录拖动的每个像素

我正在使用 UndoFX 和 ReactFX 为我的 2D 形状应用程序实现撤消/重做功能。

问题是当我移动我的形状时,EventStream 会记录每个 X/Y 像素的移动。我只想记录最后一个位置(当用户释放拖动时)。

到目前为止我已经尝试过:

而不是使用changesOf(rect.xProperty()).map(c -> new xChange(c));and changesOf(rect.yProperty()).map(c -> new yChange(c)); 我创建了一个DoubleProperty x,y, 并在释放用户鼠标时将 shape x,y 属性保存到这些变量中。最后我将 changesOf 更改为:changesOf(this.x).map(c -> new xChange(c));changesOf(this.y).map(c -> new yChange(c));

但这不起作用,它的行为就像以前一样。

0 投票
1 回答
438 浏览

javafx - 如何实现轮换组的撤消/重做功能?

感谢 James_D,当我移动或调整组大小时,我有一个完美的撤消/重做功能。不幸的是,我也无法使其与旋转一起使用。

编辑:我制作了一个自定义边界框,撤消/重做也适用于旋转。但是每次我撤消任何更改时都会引发异常消息:

线程“JavaFX 应用程序线程”中的异常

java.lang.IllegalArgumentException:收到意外的更改。

预期:test.Model.Undo.UndoChange@8c4318ec 收到:

test.Model.Undo.UndoChange@35c7d8eb 在

org.fxmisc.undo.impl.UndoManagerImpl.changeObserved(UndoManagerImpl.java:185)

事件流:

0 投票
0 回答
645 浏览

javafx - UndoFX:无法设置绑定值

我将 UndoFX 用于矩形形状的撤消和重做功能。到目前为止,除了形状的fillProperty颜色外,它的位置、大小和旋转都可以正常工作。

问题是我无法将我的形状与ColorPicker组件绑定,我得到了无限的异常:

Rectangle.fill:无法设置绑定值。

如何同时使用 undofx 函数和绑定?

0 投票
3 回答
230 浏览

java - ReactFX - “懒惰”的实时搜索文本区域

这里是反应式编程的新手。

我正在尝试使用 ReactFX 在 JavaFX 中实现“惰性”实时搜索文本区域。这里的懒惰是指一旦用户停止输入一秒钟,它就会执行搜索。代码非常简单:

然后订阅该事件流并瞧瞧。

但我也希望它在用户按下 Enter 时立即执行搜索。我不确定如何以“反应性”的方式做到这一点。简单地对 Enter 键事件执行搜索会导致搜索触发两次(一次用于键事件,一次用于文本更改),所以这是我当前的解决方案:

我尝试过使用SuspendableEventStream.suspend()认为它会“丢弃”所有待处理事件,但它没有按预期工作,待处理事件仍然被发出:

我怎样才能想出更好(更具反应性?)的解决方案?

0 投票
1 回答
248 浏览

java - 属性的属性有意义吗?

因为这是一个关于设计的问题,所以我会先说我拥有什么和想要什么。

我有一个使用组合的设计。一个Cell对象包含一个Shape和一个Background对象(此示例的自定义对象)。这两个都有自己的数据来定义它们。这是代码中的示例:

我还有一个需要表示许多单元格的 GUI,并且我已经编写了如何执行此操作(如何使用颜色、大小等在屏幕上创建我想要的内容)。它包括诸如 CellRepresentation、ShapeRepresentation 和 BackgroundRepresentation 之类的类,它们的显示属性绑定到数据属性(我认为这称为模型和视图)。

我希望能够通过更改上述数据来表示 GUI 中的更改:

  • 用户可以(例如)右键单击形状并设置其颜色。所以上面的数据发生了变化,变化需要在GUI中体现出来。
  • 用户还可以更改整个形状(例如从另一个单元格复制粘贴)。甚至整个细胞。这些变化也需要反映在 GUI 中。

我的问题是哪些类成员需要是我绑定到的 JavaFX 属性。

这就是我的想法:“叶子”属性(大小、颜色、位置......)必须是属性,所以我可以将 GUI 属性绑定到它们。但是我是否也需要制作形状和背景对象属性?只有它们的属性在屏幕上具有“实际”表示。理想情况下,我会喜欢它,如果 Shape 发生变化,那么它的所有属性都会告诉它们的绑定它们可能已经改变(也许颜色没有改变,但大小改变了)。但它不能以这种方式工作 -即使 Shape 的 Color 可以在 Shape 更改时更改,但 Color 属性不会告诉绑定到它的任何内容它已更改

这同样适用于在有许多单元格的较大图片中使 Cell 成为属性等:委托更改的属性的属性。

所以我想使 Shape 和 Background 也成为属性,InvalidationListener并向它们注册一个更新它们的属性。这似乎不正确,因为我认为有了对属性的所有支持,就会有一种方法可以做我想做的事。

有人可以建议一种方法吗?

0 投票
1 回答
150 浏览

java - 如何使用 ReactFX 的 Var 进行自定义绑定?

这个问题中,我展示了如何通过更改其包装对象而不发送它更改的更新来处理属性更改的问题。一个解决方案是使用 ReactFX:

所以现在如果shape属性本身发生变化,它也会触发变化size(除非新形状具有相同的大小)。但现在我想用自定义绑定绑定到属性,我有一个问题解释如下。

我的数据类是这些:

我想通过将它们的属性绑定到 GUI 属性来为它们创建一个 GUI 表示。我这样做:

当我运行下面的第一个绑定选项的代码时,将创建一个透明圆柱体。第二个选项将创建一个白色(默认颜色)圆柱体。我不知道为什么会这样。

如果这不是使用绑定为数据类创建表示的好方法,我也愿意接受设计建议。

0 投票
1 回答
127 浏览

java - 如何创建多级组合绑定?

向我展示了如何使用类似Val.selectVar(property, propertyOfProperty). 但是,我想知道如何继续在组合图上创建依赖项。就像财产的财产等一样。

这是我所知道的和我想要的示例:

基本上,我想知道一个属性何时会因包含它的属性中的任何位置而发生变化,而不仅仅是直接的。

0 投票
1 回答
141 浏览

java - 如何绑定到超过 1 个 ReactFX observable?

在常规的 JavaFX 中,我会在 2 个或多个 observables 上创建一个绑定,如下所示:

在 ReactFx 中,我被证明可以创建这样的绑定:

但是我如何在 2 个或更多 ReactFX 可观察对象(Val 和/或 Var)上创建绑定?

0 投票
0 回答
76 浏览

java - 将 ReactFx Var.mapBidirectional 绑定到 JavaFx 属性时类型推断失败

我正在尝试将 a 绑定TextField.textProperty()ObjectProperty<LocalDateTime>自定义控件中的 a 。以下代码在 Eclipse 中编译并运行:

但是,当我使用 maven 构建应用程序时,出现编译错误:

一种解决方法是声明一个临时Var<LocalDateTime保存mapBidirectional结果,然后绑定它。

使用 Eclipse 编译,并按预期从命令行使用 maven 编译。

感觉就像类型推断实现中的编译器错误,但我不是 Java 语言规范的专家。我希望可以从 lambda 返回值中推断出类型。无论如何,无论是 Eclipse 的 java 编译器还是 JDK 编译器都是错误的。