问题标签 [scalafx]

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 回答
188 浏览

scala - 在 ScalaFX 中如何获取鼠标下方的表格行?

我有一个人的 tableView。每次我将鼠标移过一个人行时,我都想显示一些关于它的信息。(例如,信息可以显示在 textArea 中)。谢谢

0 投票
1 回答
1212 浏览

javafx - 如何在 Javafx 或 Scalafx 中迭代 tableView?

我是 Scala 的新手。我使用具有自定义类型“约束”的 tableView,我需要按行对其进行迭代。

这是我到目前为止所达到的地方:

0 投票
0 回答
413 浏览

scala - ScalaFX 8 拖放节点到另一个节点

我需要将一个矩形节点拖到另一个节点中。ScalaFX 应该基于 JavaFX,所以这应该类似地工作,对吧?由于没有太多 ScalaFX 文档,我试图找到一些 JavaFX 示例并且我已经阅读了很多,但没有一个对我有用:(

据我了解,拖放操作应该有 3 种类型:

  • 单个节点上的简单拖放
  • 完全拖放(我应该使用这个来在节点之间进行交互)
  • 在应用程序之间拖放文件和数据

我最终得到了这个简单的类:

并在将一个节点拖到另一个节点后从控制台输出:

没有触发 OnDragOver 方法。

我错过了什么?我对拖放事件的数量感到非常困惑。

0 投票
1 回答
1453 浏览

java - 如何在 JavaFX/ScalaFX 中实现可滚动、可缩放的地图?

我正在将地图实现为电脑游戏配件;它应该通过一些信息覆盖显示计算机游戏的地理位置。我想知道在 JavaFX 或更准确地说是 ScalaFX 中实现这一目标的最佳方法是什么。

现在,我有一个非常幼稚的实现:

  • 我有不同缩放级别的地图图块。对于每个缩放级别,我将ImageViews 排列在 a 中Group并转换该组,以便所有缩放级别使用相同的坐标。
  • 我的叠加层使用了一个具有相同坐标的单独组。
  • 我使用鼠标滚轮进行缩放,只显示一个缩放级别,具体取决于当前缩放。
  • 我将所有这些打包到一个ScrollPane.

这有一些限制:

  • 所有缩放级别的所有图块都在启动时加载。这很难看,但适用于我的特定用例。
  • 仅当地图的边界有限时,使用 ScrollPane 才有效。同样,这里很好,但一般不适用于地图。
  • UX 很奇怪:ScrollPane 使用鼠标滚轮滚动,而大多数地图通过拖放滚动;大多数地图使用鼠标滚轮缩放或捏缩放。缩放在手势过程中保留“锚点”(鼠标/触摸位置)至关重要。(开箱即用的移动设备也很好,但这只是现在的梦想......)
  • 根据当前缩放,叠加层中的不同细节级别是可能的,但可能不是很有效或不方便。

显然,这是我尝试过的方法之一。This question提到了一些eppleton的图书馆,但似乎没有维护,曾经描述图书馆的博客也不存在了。此外,它似乎专注于提供一个游戏引擎,一个对游戏有意义的图块;地图中的瓦片只是一个图像,叠加层并不关心一个瓦片的开始或结束位置。

用一个具体的问题来结束这个:有没有我可以使用的库或技术来满足我的需求?我对我的第三个要点(UX)特别感兴趣,但我想如果有合适的方法,它将涵盖第 1 到第 3 点。

0 投票
1 回答
553 浏览

javafx - MeshView scalafx/javafx 的剪裁

我有以下测试代码,我尝试用圆圈剪辑 MeshView。我还尝试将 meshView 放入一个组中,然后对其进行剪辑,但这会导致一个黑色圆圈。

有没有办法剪辑一个MeshView,最好不要把它放到一个组中?

0 投票
1 回答
875 浏览

javafx - 如何使用 JavaFX JCSG 和 FXyz 在网格中打孔

我试图通过使用以下测试代码来理解 JCSG 库,其中我采用 FXyz 网格/布料和球体之间的差异来在网格中创建一个孔,以便显示底层网格图像。是否有可能做到这一点,如果可以,怎么做?我所有的尝试都会产生一个红色圆圈。

0 投票
2 回答
1107 浏览

scala - 私有字段的 Scala 名称修改和 JavaFX FXML 注入

下面的例子和解释很长,所以这是我的问题的要点:当使用坚持执行字段注入的框架(在真正应该保持私有的字段上)时,如何处理 scalac 对私有字段的名称修饰?


我正在使用 ScalaFX/JavaFX 和 FXML 在 Scala 中编写应用程序。当您使用 FXML 在 JavaFX 中定义视图时,在 FXML 中定义的对象(例如按钮和文本字段)通过以下方式注入控制器:

  • 向 FXML 元素添加fx:id属性
  • 将(通常是私有的)字段添加到控制器,@FXML注释和字段名称与fx:idFXML 中定义的属性的值匹配
  • FXMLoader实例化控制器时,它会自动通过反射将带fx:id注释的元素注入到控制器的匹配@FXML注释字段中

我不是现场注入的忠实粉丝,但这就是 FXML 的工作方式。但是,由于编译器在某些情况下执行的字段名称修改,我在 Scala 中遇到了意想不到的复杂情况......

这是一个示例应用程序:

test/TestApp.scala(没什么意思,只需要运行示例)

test.fxml(视图)

test/TestController.scala(test.fxml 视图的控制器)

运行应用程序时,println语句显示testCheckBox正确注入,但testButton为空。如果我单击复选框,则如预期的那样,NullPointerException调用时会出现testButton.text_=.

查看编译的类时,原因很明显:

  • 有一个类,用于方法中TestController$$anonfun$initialize$1传递给的匿名testCheckBox.selected.onChange()函数initialize()
  • TestController该类中,有两个私有字段:(testCheckBox如预期的那样)和test$TestController$$testButton(而不仅仅是testButton),以及访问器/修改器方法。其中,只有访问器方法test$TestController$$testButton是公开的。

显然,Scala 编译器修改了testButton字段的名称,因为它必须公开其访问器方法(从 访问它TestController$$anonfun$initialize$1)并且因为该字段和访问器/修改器方法应该保持相同的名称。


现在,最后,这是我的问题:是否有合理的解决方案来处理这种情况?现在,我所做的是公开这些字段:由于编译器不需要更改它们的可见性,它不会破坏它们的名称。但是,这些领域确实没有公开的业务。

注意:另一个解决方案是使用 scala-fxml 库,它完全隐藏了字段注入,但出于其他原因,我宁愿使用沼泽标准 FXML 加载。

0 投票
1 回答
325 浏览

scala - 带有 fxml 的 ScalaFX i18n 无法正常工作

首先是工作代码:

这里没问题。现在我想像这样添加 i18n 支持:

现在scene = new Scene(root)无法解析构造函数。

我试图通过

1) 初始化一个新的 BorderPane,如:

但是 BorderPane 的构造函数无法解析所以我尝试了

2) 将其投射到 BorderPane,例如:

这在 IDE 中没问题,但会引发编译器错误:

引起:java.lang.ClassCastException:javafx.scene.layout.BorderPane 无法转换为 scalafx.scene.layout.BorderPane

我该如何解决这个问题?

0 投票
0 回答
599 浏览

javafx - 如何控制 Javafx scalafx FXyz 3D 形状

我有以下测试代码,其中有一个 ClothMesh(来自 FXyz lib),我可以拖动、旋转和拖动我的圆形手柄。一切正常,FXyz 很棒。现在我想使用 SegmentedSphereMesh,它主要工作除了我的圆形手柄是 2D 的并且没有包裹在球体周围。我知道混合 2D 和 3D 可能出现的问题。但是,它离工作很近;我怎样才能让我的手柄与球体一起工作,或者用另一种方法来做同样的功能。请注意,我不想通过移动相机来控制形状/网格。

0 投票
0 回答
95 浏览

scalafx - 拖动一个 ScalaFX 窗口并同时打开另一个窗口时,计算机变得无响应

我正在使用多个窗口开发 ScalaFX 应用程序。但是,如果我在另一个窗口正在打开的过程中拖动一个 ScalaFX 窗口,整个桌面就会变得无响应。发生这种情况时,大多数应用程序根本不响应鼠标事件,并且不可能关闭任何一个 ScalaFX 窗口。我发现恢复响应的唯一方法是通过任务管理器终止 Java 进程,它本身只能在发出 ctrl-alt-del 后打开。

这是一个可以触发问题的简单脚本。它加载一个窗口,等待 3 秒,然后打开第二个窗口。但是,如果在打开第二个窗口的同时拖动第一个窗口,则会触发该问题。

我在 Windows 10 机器上使用 Java 8 update 60 和 Scalafx 8.0.40-R8。

关于为什么会发生这种情况或如何解决它的任何想法?