GroovyFX汇集了我最喜欢的两件事: Groovy和JavaFX 。 GroovyFX项目主页面将GroovyFX描述为“ [为JavaFX 2.0提供Groovy绑定”。 该页面上进一步描述了GroovyFX:
GroovyFX是一个API,它使在Groovy中使用JavaFX变得更加简单和自然。 GroovyFX专注于利用Groovy Builder模式的功能来使JavaFX开发比Java中的开发更容易,更简洁。 GroovyFX还利用Groovy强大的DSL功能和AST转换来消除样板,使GroovyFX代码更易于编写,更重要的是,更易于阅读。
刚刚引用的GroovyFX主页包括一个“ Hello World”示例。 在本文中,我将使用GroovyFX看一个更简单的“ Hello World”示例。 之后,我来看一个使用GroovyFX绘制饼图的更加复杂的示例。 这两个例子都是我打算在下周的RMOUG 培训日 2013演讲中展示的示例(“ 使用JavaFX和Groovy绘制Oracle数据库数据 ”)。
一个简单的GroovyFX Hello World! 下一个代码清单中显示了示例。
import groovyx.javafx.GroovyFX
import groovyx.javafx.SceneGraphBuilder
import javafx.stage.StageStyle
import javafx.stage.StageGroovyFX.start
{stage(title: 'RMOUG Training Days 2013',width: 300, height: 100,show: true){scene{stackPane{text('Hello GroovyFX!', x: 50, y: 40)}}}
}
运行上面的脚本将导致以下输出:
代码和屏幕快照显示了GroovyFX的简洁文本如何使您仅用几行代码就可以轻松地指定功能全面的JavaFX图形应用程序。
下一个代码清单显示了一个稍微复杂一些的示例,这些示例生成一个JavaFX Pie Chart 。 这里没有显示数据库访问代码,但是可以使用JDBC或Groovy SQL轻松完成。
import rmoug.td2013.dustin.examples.ChartMaker
import rmoug.td2013.dustin.examples.DbAccess
import groovyx.javafx.GroovyFX
import groovyx.javafx.SceneGraphBuilder
import javafx.stage.StageStyle
import javafx.stage.Stagedef databaseAccess = DbAccess.newInstance()GroovyFX.start
{stage(title: 'Employees Per Department',width: 800, height: 500,show: true){scene{stackPane{pieChart(title: 'Number of Employees per Department',data: ChartMaker.createPieChartDataForNumberEmployeesPerDepartment(databaseAccess.getNumberOfEmployeesPerDepartmentName()))}}}
}
上面的GroovyFX代码导致以下屏幕快照。
上面显示的简单的GroovyFX代码将Groovy与JavaFX结合在一起,以Oracle hr示例模式中每个部门的雇员数量的饼图表示形式。
下一个代码示例指示不使用GroovyFX的JavaFX应用程序的大致等效源代码。
package rmoug.td2013.dustin.examples;import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.chart.PieChart;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;public class EmployeesPerDepartmentPieChart extends Application
{final DbAccess databaseAccess = DbAccess.newInstance();@Overridepublic void start(final Stage stage) throws Exception{final PieChart pieChart =new PieChart(ChartMaker.createPieChartDataForNumberEmployeesPerDepartment(this.databaseAccess.getNumberOfEmployeesPerDepartmentName()));pieChart.setTitle('Number of Employees per Department');stage.setTitle('Employees Per Department');final StackPane root = new StackPane();root.getChildren().add(pieChart);stage.setScene(new Scene(root, 800 ,500));stage.show();}public static void main(final String[] arguments){launch(arguments);}
}
可以将直接JavaFX示例的代码与GroovyFX示例进行比较,以查看GroovyFX语法比纯JavaFX代码更简洁(这是基于Groovy的预期),并且可以说比可读JavaFX代码更具可读性(尽管我认为JavaFX代码是本身具有相当的可读性)。 比较这两个代码示例还有助于了解GroovyFX如何使用JavaFX API用户熟知的属性名称。 我是Groovy和JavaFX的粉丝,而GroovyFX将它们融合在一起。
参考:来自我们的JCG合作伙伴 Dustin Marx的Hello GroovyFX,来自Inspired by Actual Events博客。
翻译自: https://www.javacodegeeks.com/2013/02/hello-groovyfx.html