JavaFX2.x专题教程 之布局面板

本教程将主要讲JavaFX的GUIs布局控件的应用,以便构建更美观合宜的用户应用界面。

友情提醒:

如果不能看到相应的图片(CSDN直接贴文档里的图片一直不能显示),请下载PDF版“JavaFX2.x专题教程-布局面板”。

1界面布局1.1内置布局面板

在JavaFX应用中,通过设置每个UI元素的位置和尺寸属性,可以实现手动UI控件布局。但是,JavaFX也提供了一个更容易界面布局选择,即利用内置的布局面板。JavaFX的SDK提供了好几个布局容器(谓之面板)来简洁的设置和管理布局,诸如行式、列式、栈式、标题式以及其它等。当视窗尺寸改变时,布局面板自动重定位和改变所包含的节点尺寸,以便保持相关节点属性的一致性。

这个专题中,将对JavaFX布局包内的每个布局面板进行概要介绍并提供相应简单示例。LayoutSample.java文件包含了内置控件主体,源码参见附件1:布局示例。也可下载相应的完整的Netbeans的工程文件:LayoutSample.zip。

下面介绍内置布局面板控件。

1.1.1 边界面板(BorderPane)

BorderPane布局面板内提供了上、下、左、右、中五个区域放置节点,图1-1展示了边界面板的情形。如果实际应用不需要某一区域,可以不需要定义之并不为之分配空间即可。

图1-1 边界面板示例

边界面板对于顶部工具栏、底部状态栏、左边导航栏、右边附件信息以及中部工作区的典型外观是非常有用的。

如果窗口比每个区域内容需要的空间大,缺省情况下,多余的将留给中间区域;如果窗口小于需要的空间,则区域就肯能重叠。重叠方式有区域内设置的顺序方式决定。比如,区域设置的顺序为左、底和右,那么当窗口小了,底部将重叠在左边区域,右边将重叠底部区域。如果顺序是左、右和底,那么当窗口小时,底部重叠在左右区域上。

示例1-1展示了边界面板的创建,并用于布局示例应用控件的设置。每个区域应用的创建布局面板的方法,在此主题剩余部分将逐一进行描述。

BorderPane border = new BorderPane();HBox hbox = addHBox()border.setTop(hbox);border.setLeft(addVBox());addStackPane(hbox); // Add stack to HBox in top regionborder.setCenter(addGridPane());border.setRight(addFlowPane());

注意,底部区域在此示例的边界面板中没有用。如果需要增加些内容到底部区域,使用如下语句,并用你选择的控件来代替node内容。

1.1.2 水平布局面板(HBox)

HBox布局面板为在单行中布置一系列节点提供了一种简易方式。如图1-2所示,展示了一个HBox面板示例图。

图1-2 HBox面板

特性padding用于设置并管理节点和HBox边缘间的距离。设置特性Spacing间隔用于管理节点间的间距。背景色能通过设置式样风格来改变。示例1-2创建了一个HBox面板工具栏,,且包含了两个按钮。

public HBox addHBox() { HBox hbox = new HBox(); hbox.setPadding(new Insets(15, 12, 15, 12)); hbox.setSpacing(10); hbox.setStyle("-fx-background-color: #336699;"); Button buttonCurrent = new Button("Current"); buttonCurrent.setPrefSize(100, 20); Button buttonProjected = new Button("Projected"); buttonProjected.setPrefSize(100, 20); hbox.getChildren().addAll(buttonCurrent, buttonProjected); return hbox;}

示例1-1中的setTop()方法把HBox面板添加到边界面板的顶部区域。结果如图1-3所示。

图1-3 边界面板中HBox

1.1.3 垂直布局面板(VBox)

VBox面板是在单列中布置节点对象的,其它与HBox面板类似。图1-4展示了VBox的一个应用示例情况。

图1-4 VBox面板示例

特性padding用来设置并管理节点间和VBox边缘的间距;Spacing特性用来设置管理节点间距;Margins用来设置添加个别控件周围的附属空间。示例1-3创建了一个选项清单的VBox面板示例应用。

public VBox addVBox(); { VBox vbox = new VBox(); vbox.setPadding(new Insets(10)); vbox.setSpacing(8); Text title = new Text("Data"); title.setFont(Font.font("Arial", FontWeight.BOLD, 14)); vbox.getChildren().add(title); Hyperlink options[] = new Hyperlink[] { new Hyperlink("Sales"), new Hyperlink("Marketing"), new Hyperlink("Distribution"), new Hyperlink("Costs")}; for (int i=0; i<4; i++) { VBox.setMargin(options[i], new Insets(0, 0, 0, 8)); vbox.getChildren().add(options[i]); } return vbox;}

示例1-1中的setLeft方法把VBox面板添加到边界面板的左侧区域。这样结果如图1-5所示。

图1-5 边界面板中VBox应用

1.1.4 堆栈面板(StackPane)失败是什么?没有什么,只是更走近成功一步;

JavaFX2.x专题教程 之布局面板

相关文章:

你感兴趣的文章:

标签云: