Scala被认为是JVM上的下一代语言的最有潜力的继承者。
Apache Pivot是一个基于RIA的Java GUI框架。
初识 Pivot也就是在其升级到Apache顶级项目的时候,带着好奇心去浏览了一番,发现其在Java GUI框架方便果然是独树一帜,Java很成功,但是在GUI方面确实很失败,从AWT,到Swing,再到现在的JavaFx,很少被Java社区的开发者所接受。而IBM的SWT,虽然在性能和框架体系上声称优越于AWT、Swing等,但是在目前RIA大行其道的情况下,个人觉得有点落伍了,虽然Eclipse e4对SWT新增了不少功能(xwt,databinding),这些功能对于Pivot来说早已经就是天生的了。何况e4现在还是处于不稳定的状态。
上面废话太多,下面的代码演示了如何使用Scala编写一个最简单的Pivot程序。只包含一个PushButton控件和按钮事件处理函数
package cn.dvision.main
import org.apache.pivot.wtk._
import org.apache.pivot.wtkx._
import org.apache.pivot.collections.{Map => PMap} /*重新命名一下,与Predef.Map冲突,带有歧义*/
import cn.dvision.bean._
class PivotWindow extends org.apache.pivot.wtk.Application {
var window : Window = null
var button : PushButton = null
def startup( display :Display, properties : PMap[String, String] ) {
val wtkxSerializer = new WTKXSerializer()
/*从WTKX文件中加载GUI控件对象 并使用 asInstanceOf[T]强制转换为制定的类型的对象
与 Java 的 widow = ( Window) wtkxSerialiser.(...) 相同*/
window = wtkxSerializer.readObject(this,"PivotWindow.wtkx").asInstanceOf[Window]
button = wtkxSerializer.get("button").asInstanceOf[PushButton]
/*监听Button事件,并设置事件监听的执行内容*/
listenTo( button ) { (btn : Button) => {
Alert.alert( "Click " + btn.getButtonData, window)
}
}
window.open(display)
}
def shutdown( optional : Boolean) : Boolean = {
if ( window != null ) window.close
return true;
}
def suspend() {
}
def resume() {
}
/*事件监听辅助函数,向 button增加一个监听函数*/
def listenTo ( button : Button ) ( btnPressedFun : ( Button ) => Unit ) : Unit = {
button.getButtonPressListeners().add( new ButtonPressListener() {
def buttonPressed( button : Button ) : Unit = {
btnPressedFun(button)
}
}
)}
}
object PivotWindow {
def main( args : Array[String] ) {
/*使用classOf获得 class 对象, Java中使用 PivotWindow.class*/
DesktopApplicationContext.main( classOf[PivotWindow],args)
}
}
下面是PivotWindow.wtkx 内容
<Window title="Hello WTKX!" maximized="true"
xmlns:wtkx="http://pivot.apache.org/wtkx"
xmlns="org.apache.pivot.wtk">
<content>
<PushButton wtkx:id="button" buttonData="Click Me"/>
</content>
</Window>
编译:
scalac -classpath pivot-core-1.5.jar;pivot-tools-1.5.jar;pivot-wtk-1.5.jar;pivot-wtk-terra-1.5.jar;. PivotWindow.scala
Scala中,源代码的文件名和类可以不一样,有点类似于C++,而且你可以在同一个源代码文件中放置多个统一等级的类,而不像Java中,需要每个类需要一个独立的文件保存。 PivotWindow.scala 可以使用你喜欢的任何名字命名。
运行:
scala -classpath pivot-core-1.5.jar;pivot-tools-1.5.jar;pivot-wtk-1.5.jar;pivot-wtk-terra-1.5.jar;. cn.dvision.main.PivotWindow
我是把 pviot的jar文件放在和 scala文件相同的目录下的条件下执行 scalac和scala的。
分享到:
相关推荐
文档以scala语言编写了sparkSQL查询数据的方式,没有打jar包运行,在spark命令行测试通过
本项目是基于Scala语言开发的Apache Spark学习与实践源码,共包含53个文件。其中,Scala源代码文件21个,文本文件7个,XML文件5个,Markdown文档5个,JSON配置文件3个,Avro Schema文件2个,CSV数据文件2个,...
Binding.scala 是一个用 Scala 语言编写的数据绑定框架,可以在 JVM 和 Scala.js 上运行。它可以用作 reactive web freamework。 它允许你使用原生 XHTML 语法去创建 reactive DOM 节点,这种 DOM 节点可以在数据源...
spark-recommender, 在 Scala 中使用 Apache Spark 框架,编写了可以扩展的推荐系统 火花推荐采用 Scala 框架编写的可以扩展推荐系统,使用了 Apache Spark 框架。实现的算法包括:k-最近邻居带聚类的k-近邻带簇树的...
spark中用scala编写累加器小程序统计指定文章中的空白行,然后通过split函数通过空格切分文章,输出到指定的目录中。
Scala语言分析报告
Scala语言规范-Scala 是一门类 Java 的编程语言,它结合了面向对象编程和函数式编程。 Scala 是纯面向对象的,每个值都是一个对象,对象的类型和行为由类定义,不同的类可以通过混入(mixin)的方式组合在一起。 Scala...
第 1 章 SCALA 的概述 11.1 学习 SDALA 的原因11.2 SCALA 语言诞生小故事 1以及 JVM 的关系分析图21.4 SCALA 语言的
Scala语言入门
本资源提供了一套基于Scala语言的Apache Spark源代码注释与翻译的设计源码,包含8170个文件。其中包括2245个Questionnaire文件,1297个Scala源代码文件,249个Java源代码文件,154个TXT文档,90个Python脚本文件,56...
Scala语言规范.zip
《Scala语言规范》非常有利于spark的学习。希望能够帮助到大家。
Scala 语言衍生自 Funnel 语言。Funnel 语言尝试将函数式编程和 Petri 网结合起来,而 Scala 的预期目标是将...本文希望通过一系列 Java 与 Scala 语言编写的相同程序代码的对比,让读者能够尽快地熟悉 Scala 语言。
Scala是一门类Java的编程语言,它结合了面向对象编程和函数式编程。Scala是纯面向对象的,每个值都是一个对象,对象的类型和行为由类定义,不同的类可以通过混入(mixin)的方式组合在一起。
完整的ID3决策树算法,采用了scala语言来实现,代码完整。
[Release] ][ ]介绍这是用Scala为[Apache Samza] 框架编写的简单流处理作业([介绍性博客文章] ),处理来自[Apache Kafka] 主题的JSON事件,并定期向第二个Kafka主题发出聚合。 它由[Snowplow Analytics] 的数据...
scala 从入门到精通以及各种使用规范,使用技巧的文档
本项目是基于Scala开发的Apache Spark开源项目设计源码,共包含9534个文件。其中Q文件2245个,Scala源代码文件1951个,Java源代码文件410个,文本文件162个,Python源代码文件150个,Markdown文档72个,R语言文件45...
《ScalaReference.pdf 》是官方出的指导书,《scala语言规范.pdf》是其的中文译版。《scala程序设计》这本书讲的比较细致,epub格式可以放在手机、平板里,方便在移动端看。
快学Scala、scala函数式编程、Scala编程实战:三本书籍,带目录和标签