ScalaFX 是用 Scala 语言编写的UI DSL,位于JavaFX 2和JavaFX 8之上。每个ScalaFX应用程序也是有效的Scala应用程序。它支持与Java的完全互操作性,并且可以在支持Java虚拟机(JVM)和JavaFX2或JavaFX8的任何地方运行。
ScalaFX使用简单的分层模式创建新对象并构建场景图。
主要特性如下:
1)对程序员友好的层次结构式的对象创建语法。
stage = new Stage { title.value = "Hello Stage" width = 600 height = 450 scene = new Scene { fill = Color.LIGHTGREEN content = new Rectangle { x = 25 y = 40 width = 100 height = 100 fill <== when (hover) then Color.GREEN otherwise Color.RED } } }
2)易于理解的属性绑定(Binding)语法。
height <== rect1.height + rect2.height
width <== max(rect1.width, rect2.width, rect3.width)
color <== when (hover) then Color.GREEN otherwise Color.RED
text <== when (rect.hover || circle.hover && !disabled) then textField.text + " is enabled" otherwise "disabled"
rect.hover onInvalidate { needsRepaint = true }
3)精心设计的动画语法。
Seq( at(0 s) {circle.centerX -> random * 800}, at(0 s) {circle.centerY -> random * 600}, at(40 s) {circle.centerX -> random * 800}, at(40 s) {circle.centerY -> random * 600} )
4)类型安全的API。
5)无缝的JavaFX/ScalaFX互操作。
gradle:3.0.1. 在对Scala的SBT感到有些失望之后,我想要一个更合乎逻辑,更易于理解且拥有更好用户体验的替代方案。 毕竟,特定领域语言的重点是使脚本,公式或语法的编写对用户来说是负担得起的。 DSL必须对用户而言是可理解的,以域语言编写脚本必须相对容易,并且肯定必须基本上没有烦恼。 当然,最好的例子是电子表格,如Excel,XML样式表转换语言(XSLT)和外壳程序脚本(如DOS,
在对Scala的SBT感到有些失望之后,我想要一个更合乎逻辑,更易于理解且拥有更好用户体验的替代方案。 毕竟,特定领域语言的全部目的是使脚本,公式或语法的编写对用户来说是负担得起的。 DSL必须对用户来说是可理解的,以域语言编写脚本必须相对容易,并且肯定必须基本上没有烦恼。 当然,最好的例子是电子表格,如Excel,XML样式表转换语言(XSLT)和外壳程序脚本(如DOS,BASH)。 我最近在S
我正在尝试使用 JavaFX和Scala实现一些简单的笔记管理器与一些思维导图功能. 我试图决定是否直接从Scala或ScalaFX调用JavaFX代码?我不知道是否值得学习ScalaFX,并不是简单直接从Scala代码调用JavaFX? 1)自然语言绑定表达式 – 很好,但是我并没有真正计划使用绑定(我打算使用EventBus进行组间事件和几个绑定用于内部组件事件). 2)定制动画语法 – 我不
2. 函数式编程 2.1 Seq[String] 数组或列表 val strSeq=Seq.apply("hello",world) # 省略 apply val intSeq=Seq(1,2) # 长度 intSeq.length intSeq.size # map 函数,遍历 Seq 中的每个元素,然后将元素传给函数。 intSeq.map(x=>x+1) # flatMap 函数,遍历 S
Scala是一门现代的多范式编程语言,旨在以简练、优雅及类型安全的方式来表达常用编程模式。它平滑地集成了面向对象和函数语言的特性。 Scala是面向对象的:Scala是一个纯面向对象语言,在某种意义上来讲所有数值都是对象。对象的类型和行为是由class和trait来描述的。Class的抽象可由子类化和一种灵活的基于mixin的组合机制(它可作为多重继承的简单替代方案)来扩展。 Scala是函数式的
迭代器不是集合,而是逐个访问集合元素的方法。 iterator it上的两个基本操作是next和hasNext 。 对it.next()调用将返回迭代器的下一个元素并提升迭代器的状态。 您可以使用Iterator的it.hasNext方法找出是否有更多元素要返回。 “逐步”迭代器返回的所有元素的最简单方法是使用while循环。 让我们按照以下示例程序进行操作。 例子 (Example) objec
我是Scala的新手。我在想整个逆变关系是如何运作的。我了解协方差和不变量的概念,我也知道如何在实践中实现它们。我还理解了逆变(协方差的反向)的概念,以及它是如何在Scala中的Function1特性中实现的。它为您提供了一种抽象,而无需为不同的类重新定义Function1实现。但是,我还是不完全明白,奇怪吗?现在,我就快到了…我如何用逆变来解决下面的问题: 上面的例子摘自http://blog.
<code>Spark</code>版本为1.3.0。 来自< code > sqlcontext . Scala (https://github . com/Apache/spark/blob/master/SQL/core/src/main/Scala/org/Apache/spark/SQL/sqlcontext . Scala)的源代码: 我真的不能理解上面的代码。 是如何工作的? (_)
如何在Gradle Scala项目中指定Scala版本? 官方留档声明依赖项用于获取编译器。 这是否意味着将使用Scala 2.11.1?
表单项: input, textarea, select 等. 使用v-model来绑定 输入项 <input v-model="my_value" style='width: 400px'/> 就可以在代码中获取到 this.my_value的值. 表单项的完整例子 <template> <div> input: <input type='text' v-model="input
本文向大家介绍Scala Either,包括了Scala Either的使用技巧和注意事项,需要的朋友参考一下 示例 错误/成功的不同数据类型 在任何一个值上进行模式匹配 将任一值转换为选项