问题标签 [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 投票
2 回答
2159 浏览

scala - 如何在 ScalaFX 中正确声明属性更改监听器?

这段代码为例,我编写了以下代码来跟踪滑块的变化并将结果放入“speed: Int”变量中:

但这会导致错误:

如果我更改ObservableValue[_ <: Number]为此ObservableValue[_ <: Number, _ <: Number]错误消失但另一个出现:

有任何想法吗?

更新:我已经通过ObservableValuejavafx.beans.value.ObservableValue. 它现在编译并且没有抛出任何错误,但仍然无法工作 - 代码永远不会被调用。

0 投票
2 回答
1770 浏览

scala - 一个最简单的scalafx示例无法编译

我正在用一个最简单的例子尝试scalafx,但它无法编译,错误如下:

错误:scalac:在类文件“StageIncludes.class”中遇到对 javafx.stage.PopupWindow.AnchorLocation 的错误符号引用。无法访问对象 javafx.stage.PopupWindow 中的类型 AnchorLocation。当前类路径可能缺少 javafx.stage.PopupWindow.AnchorLocation 的定义,或者 StageIncludes.class 可能已针对与当前类路径中找到的版本不兼容的版本进行编译。

我用谷歌搜索,发现有人说我们需要添加jfxrt.jar到类路径,但这仍然不起作用。

我的代码:

构建.sbt

应用程序.scala

就这样。

0 投票
0 回答
400 浏览

scala - 如何从 ScalaFX 中动态创建的元素事件处理程序访问 FXML 定义的元素?

我正在尝试在 FXML 定义的表单控制器中为动态创建的按钮编写事件处理程序,它似乎工作正常,但一旦我尝试访问另一个元素,它就会失败。

例如这段代码工作正常:

但是通过在函数开头抛出 NullPointerException 来替换println("123")就足以if(slider != null) println("123")使应用程序失败。initialize

我想要达到的是调整按钮按下时的滑块值(同时创建这个特定的按钮动态地从 FXML 加载表单的其余部分),我认为我的错误是使用了错误的方法来做到这一点,但我已经发现仅对滑块变量进行的空检查会导致失败,不一定是其值调整。

这对我来说看起来很奇怪,好像滑块变量为空我会通过检查得到这个事实,如果它无法访问,应用程序将无法编译,但我得到的是不同的。

0 投票
1 回答
148 浏览

java - 调用一个从scala代码接受``类型参数的java方法?

我正在编写一些scalafx代码,它需要从 java 调用一个方法:

但它报告addListener参数的编译错误:

类型不匹配,预期:ChangeListener[_ >: String],实际:ChangeListener with Object { def stateChange(e:ChangeEvent) Unit }

addListener是一个java方法:

如何解决?

0 投票
2 回答
991 浏览

scala - TableView 中的自定义单元格

我正在开发一个 scalafx 项目,我想要一个 TableView,其中一些单元格包含一个按钮。我找到了一个如何将图形放入tablecell的示例。当我使用示例并且只替换调用以graphic = ...使用按钮时,有时我会得到每列都是空的单元格,除了按钮所在的列:

截屏

我该如何解决?(我已经检查过它不仅仅是名称值上的空字符串,因此最后一个登录按钮不应该在那里)

以下是修改为使用按钮的示例代码:

0 投票
0 回答
330 浏览

javafx - exportjars := true 的含义是什么?

我刚刚开始使用 sbt 插件来打包 JavaFx/ScalaFx 应用程序sbt-javafx。这在 Java 7 下。

虽然该插件似乎运行良好,但它无法正确打包多模块项目。他们发现的一种解决方法是exportsJars := true在 JavaFX 模块所依赖的所有模块中使用。

我还有可以为我生成 JavaFX 应用程序的 IntelliJ IDEA,尽管这会破坏自动构建。我非常希望可执行文件自动化。

我需要了解该参数对我的 sbt 构建的广泛影响。为什么需要设置true

这是帮助定义:

确定此项目的导出类路径是否包含类 (false) 或打包的 jar (true)。

听起来默认情况下它是false. 为什么?

ps 如果有人有更简洁的解决方案来使用 sbt 打包 JavaFX/ScalaFX 应用程序,请随时分享。

0 投票
2 回答
18772 浏览

popup - 有没有一种简单的方法可以在 JavaFX 中显示提示文本?

在 Borland VCL 库中,几乎所有控件都有一个提示属性。在运行期间,当您将鼠标放在相应控件上时,当您移动鼠标时,一个带有提示文本的小框会弹出并再次消失,就像 Windows 资源管理器和其他程序中的帮助消息一样,当鼠标光标悬停在按钮上时.

JavaFX中是否有类似的概念(实际上,我正在使用ScalaFX)?

当然,我可以创建一个没有装饰的新舞台,添加一些鼠标侦听器等,但它不是已经在某个地方可用了吗?

0 投票
1 回答
1383 浏览

scala - Creating custom ScalaFX controls

What exactly is the right way to create a custom ScalaFX control? I'm coming from Swing and Scala Swing, where custom components are simply created by extending Component or Panel. But when I try to extend ScalaFX's Control, I can't extend it without a JavaFX Control delegate. Should I just create custom ScalaFX components by extending the base JavFX classes instead of the ScalaFX classes?

0 投票
2 回答
1171 浏览

scala - 如何更改 ScrollPane (JavaFX/ScalaFX) 的背景?

我想更改 ScrollPane 的背景颜色。这是我尝试这样做的代码的一部分:

文本显示正常,但更改背景颜色的两次尝试均无效,使用:
Scala 版本 2.10.3 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_05)。

Scenic View 查看,发现 ScrollPane 下方的场景图中意外出现了两个 StackPane,所以层次结构是:

  1. ScrollPane //我创建的
  2. StackPane //UNEXPECTED -- 剪辑内容
  3. StackPane //UNEXPECTED -- 全尺寸内容
  4. 组//我创建的
  5. 文本//我创建的

如果我将任一 StackPane-s 的背景更改为"-fx-background-color: blue"(使用Scenic View),它会产生效果,但不会影响 ScrollPane 的样式。但是如何从代码中做到这一点?如果我做

, 它说

群@567fa81a

有没有一种简单的方法可以访问 StackPanes 或更改背景?我可以“插入”一个填充的大矩形,但这看起来很丑陋并且调整大小变得复杂,背景有什么问题?

0 投票
1 回答
2101 浏览

scala - 使用 sbt-native-packager 和 ScalaFXML 进行宏扩展时出现异常

在 github上创建了一个小项目,用于探索 ScalaFx 以及我想在更大项目中使用的其他一些东西。目前,它包括一个子项目,这是一个使用 ScalaFX 和 ScalaFXML 编写的简单计算器。

该项目使用 SBT 命令构建并运行良好calculator/run

我现在正在尝试使用 sbt-native-packager 打包它。我添加了一个名为“exemple-cli”的简单项目(来自 sbt-native-packager 的文档),它可以很好地打包exemple-cli/stage(我在 exemple-cli/target/universal/stage 中得到了预期的结果)。但是,当我运行命令时calculator/stage,出现以下错误:

显然,ScalaFXML 用于为控制器生成代理类的宏存在错误,但这仅在使用 sbt-native-packager 打包时发生,而不是仅在使用 SBT 编译时发生......有谁知道可能导致这种情况的原因?