[译]JavaFX 2.0+系列教程-使用内置的布局面板(5)-堆栈面板(StackPane)

[译]JavaFX 2.0+系列教程-使用内置的布局面板(5)-堆栈面板(StackPane)

堆栈面板 StackPane 将所有的节点放在一个堆栈中进行布局管理,后添加进去的节点会显示在前一个添加进去的节点之上。这个布局为将文本(Text)覆盖在一个图形(Shape)或者图像(Image)上提供了一个简单的方案,或者可以将普通的图形相互覆盖来创建更复杂的图形。

图 1-6 显示了一个帮助按钮,它是通过在一个渐变背景的方形上堆了一个问号标志来实现的。

图 1-6 简单的堆栈面板示例Sample Stack Pane

你可以在堆栈面板中设置对齐属性(Alignment)来控制子节点的位置,这个属性是对所有子节点生效的。你也可以通过设置外边距属性(Margin)来单独的控制单个子节点的位置。

代码片段 例 1-4 是上图中帮助按钮的实现代码

例1-4 创建堆栈面板

public void addStackPane(HBox hb) {
    StackPane stack = new StackPane();
    Rectangle helpIcon = new Rectangle(30.0, 25.0);
    helpIcon.setFill(new LinearGradient(0,0,0,1, true, CycleMethod.NO_CYCLE,
        new Stop[]{
        new Stop(0,Color.web("#4977A3")),
        new Stop(0.5, Color.web("#B0C6DA")),
        new Stop(1,Color.web("#9CB6CF")),}));
    helpIcon.setStroke(Color.web("#D0E6FA"));
    helpIcon.setArcHeight(3.5);
    helpIcon.setArcWidth(3.5);

    Text helpText = new Text("?");
    helpText.setFont(Font.font("Verdana", FontWeight.BOLD, 18));
    helpText.setFill(Color.WHITE);
    helpText.setStroke(Color.web("#7080A0")); 

    stack.getChildren().addAll(helpIcon, helpText);
    stack.setAlignment(Pos.CENTER_RIGHT);     // 在堆栈面板中右对齐
    StackPane.setMargin(helpText, new Insets(0, 10, 0, 0)); // 设置问号标志例右边10像素以达到将问号标志居中的效果

    hb.getChildren().add(stack);            // 将StackPane添加到HBox中
    HBox.setHgrow(stack, Priority.ALWAYS);    // 将HBox水平多余的所有空间都给StackPane,这样前面设置的右对齐就能保证问号按钮在最右边
}

代码片段 例 1-4 的最后两行将创建的StackPane添加到 例 1-2 创建的HBox中,同时设置StackPane始终居于HBox的最右边。

运行代码,结果如 图 1-7 所示。

图 1-7 StackPane在HBox中的显示效果

[译]JavaFX 2.0+系列教程-使用内置的布局面板(5)-堆栈面板(StackPane)

时间: 2024-11-08 20:15:34

[译]JavaFX 2.0+系列教程-使用内置的布局面板(5)-堆栈面板(StackPane)的相关文章

[译]JavaFX 2.0+系列教程-使用内置的布局面板(4)-垂直盒子(VBox)

[译]JavaFX 2.0+系列教程-使用内置的布局面板(4)-垂直盒子(VBox) 垂直盒子 VBox 和水平盒子 HBox 很类似,只是其包含的节点是在单列中进行排列.图 1-4 显示了一个VBox的示例. 图 1-4 VBox示例 内边距(Padding)属性可以设置节点到VBox边缘的空隙.空间(Spacing)属性可以设置节点之间的间隙.边缘(Margin)属性可以为每个节点增加额外的环绕空间. 代码片段 例 1-3 创建了一个VBox,其中包含了一系列的选项. 例 1-3 创建VBo

[译]JavaFX 2.0+系列教程-使用内置的布局面板(3)-水平盒子(HBox)

[译]JavaFX 2.0+系列教程-使用内置的布局面板(3)-水平盒子(HBox) 水平盒子 HBox 为多个节点排列在一行中提供了一个简单的方法. 图 1-2 是HBox的一个示例. 图 1-2 HBox示例 内边距(Padding)属性可以设置节点到HBox边缘的空隙.空间(Spacing)属性可以设置节点之间的间隙.样式(Style)属性可以设置背景颜色. 代码片段 例 1-2 创建了一个HBox,实现了一个工具栏(ToolBar)的效果,其中包含了两个按钮. 例 1-2 创建HBox

[译]JavaFX 2.0+系列教程-使用内置的布局面板(2)-边框面板(BorderPane)

[译]JavaFX 2.0+系列教程-使用内置的布局面板(2)-边框面板(BorderPane) 边框面板 BorderPane 将面板划分为5个区域来放置界面元素:上.下.左.右.中. 图 1-1 显示了边框面板的布局示意图.每个区域的大小是没有限制的.在你使用边框面板时,如果不需要某个区域,你只要不为该区域设置内容,该区域则不会被分配显示空间,自然也就不会显示. 图 1-1 边框面板布局示意图 边框面板是我们经常见到的一个非常经典的布局效果:上面是菜单栏和工具栏,下面是状态栏,左边是导航面板

[译]JavaFX 2.0+系列教程-使用内置的布局面板(7)-流面板(FlowPane)

[译]JavaFX 2.0+系列教程-使用内置的布局面板(7)-流面板(FlowPane) 流面板 FlowPane 中包含的节点会连续的平铺放置,并且在边界处自动换行(或者列).节点可以在垂直方向进行平铺(列),或者以水平方向进行平铺(行).垂直的流面板会以高度边界来进行自动换列,水平的流面板会以宽度边界来自动换行. 图 1-10 显示了一个简单的水平流面板,其中包含的每个节点都是带数字编号的图标.相反的,在垂直流面板中,第一列会包含标号为1到4的节点,第二列会包含编号为5到8的节点. 图 1

[译]JavaFX 2.0+系列教程-使用内置的布局面板(6)-网格面板(GridPane)

[译]JavaFX 2.0+系列教程-使用内置的布局面板(6)-网格面板(GridPane) 网格面板 GridPane 使你可以创建灵活的基于行和列的网格来放置节点.节点可以放在任意一个单元格中.如果你需要的话,你也可以设置一个节点跨越多个单元格(行或者列).网格面板对于创建表单或者其他以行和列来组织的界面来说是非常有用的. 图 1-8 显示了一个网格面板,它包含了一个图标.标题.子标题.文本和一个饼状图.在图中,属性 gridLinesVisible 被用来设置显示网格线,它能展示出行和列的

[译]JavaFX 2.0+系列教程-使用布局(2)-使用内置的布局面板(1)

JavaFX 2.0+系列教程-使用布局(2)-使用内置的布局面板(1)(Layout Pane) 本系列教程主要介绍JavaFX SDK中布局和容器相关类,我们称之为面板(Pane).使用布局面板能够非常简单的管理JavaFX应用程序中的界面元素(Node). 我们可以为每个界面元素设置位置和大小来进行手动布局,但是更简单的选择是使用布局面板.JavaFX SDK中提供了一系列的布局面板,使得可以简单的设置和管理一些经典布局,比如行(Row).列(Column).堆栈(Stack)和瓷砖(Ti

[译]JavaFX 2.0+系列教程-使用布局(1)

JavaFX 2.0+系列教程-使用布局(1) 这个系列的教程主要是介绍如何在JavaFX应用程序中使用布局面板来创建用户界面. 主要包括以下3个主题: 使用内置的布局面板 - 介绍内置的布局面板,以及为每个面板提供简单的示例. 设置节点大小和对齐的技巧 - 提供了为节点覆盖默认大小和位置的示例. 使用CSS来修饰布局面板 - 介绍如何使用CSS来自定义布局面板. [译]JavaFX 2.0+系列教程-使用布局(1),布布扣,bubuko.com

[译]JavaFX 2.0+ - 使用JavaFX UI控件

使用JavaFX UI控件 本教程涵盖了JavaFX API中内置的UI控件. 文档包含以下章节: 标签 按钮 单选按钮 开关按钮 复选框 选择框 文本字段 密码字段 滚动条 滚动面板 列表 表格 树 树形表格 下拉列表框 分隔符 滑块 进度条,进度指示器 超链接 提示 HTML编辑器 标题面板和手风琴 菜单 颜色选择器 日期选择器 分页控制 文件选择器 如何定制控件 嵌入式平台的支持 每一章提供了代码示例和应用程序来展示控件是如何显示和工作的. 你可以从目录中找到应用程序的源文件和相应的Net

[译]JavaFX 2.0+ - UI控件 - 标签

2 标签(Label) 本章主要介绍如何使用标签(Label),该类位于JavaFX API的javafx.scene.control包中,用于显示一个文本元素. 接下来会介绍如何让文本元素自动换行来适应受限空间,添加一个图标,或使用视觉特效. 图2 - 1显示了标签的三种常见用法. 左边的标签是一个带图标的文本,中间的展示了旋转效果,右边的使用了自动换行设置. 图2 - 1 标签示例 这幅图显示了三个标签,他们被放在了同一行. 左边的标签有一个看起来像个放大镜的图标和一个“Search”文本.