`
somefuture
  • 浏览: 1089045 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

(翻译)JavaFX2.0网格布局窗格GridPane

阅读更多

public class GridPane extends Pane

 

GridPane将其孩子结点灵活地放置在行列网格中。若设置了边框和边缘(border and/or padding),它的内容只能在这些间隙内部。

孩子结点可以放置在任意位置并且可以跨行列。结点也可以在行列内随便覆盖,网格窗格孩子结点列表中的顺序决定了这些结点的堆栈顺序:第一个在最下,最后一个在上面。

GridPane也可以使用CSS来装饰。

网格约束

孩子结点的位置由其布局约束来定义:

 

约束 类型 描述
columnIndex integer 孩子结点的起始列
rowIndex integer 孩子结点的起始行
columnSpan integer 孩子结点的水平跨列数目
rowSpan integer 孩子结点的垂直跨行数目

若孩子结点的位置没被指定,则将其放入第一行列中。若跨行列数没有指定,默认为1。孩子结点的位置约束可以动态修改,网格窗格会随着更新。

总的行列数无需指定,窗格会根据内容自动扩展和收缩。

使用GridPane时,程序需要为孩子结点指定布局约束并将它们加入窗格中。约束使用的是该类的静态setter方法:

     GridPane gridpane = new GridPane();

     // Set one constraint at a time...
     Button button = new Button();
     GridPane.setRowIndex(button, 1);
     GridPane.setColumnIndex(button, 2);

     // or convenience methods set more than one constraint at once...
     Label label = new Label();
     GridPane.setConstraints(label, 3, 1);

 // column=3 row=1

     // don't forget to add children to gridpane
     gridpane.getChildren().addAll(button, label);


更可以使用整合了以上步骤的方法来设置约束:


     GridPane gridpane = new GridPane();
     gridpane.add(new Button(), 2, 1);


 // column=2 row=1
     gridpane.add(new Label(), 3, 1);

  // column=3 row=1

行列大小

行列尺寸默认是匹配内容的,列宽适应的是最宽的元素,行高适应的是最高的元素。然而,如果程序需要指定行列尺寸,可以通过RowConstraints 和ColumnConstraints对象指定。比如,

     GridPane gridpane = new GridPane();
     gridpane.getColumnConstraints().add(new ColumnConstraints(100));

 // column 1 is 100 wide
     gridpane.getColumnConstraints().add(new ColumnConstraints(200));

 // column 2 is 200 wide

行列默认会动态修改大小。若程序需要特定的行列来适应额外的空间,可以设置 RowConstraints或 ColumnConstraints 对象的优先级。比如

     GridPane gridpane = new GridPane();
     ColumnConstraints column1 = new ColumnConstraints(100,100,Double.MAX_VALUE);
     column1.setHgrow(Priority.ALWAYS);

     ColumnConstraints column2 = new ColumnConstraints(100);
     gridpane.getColumnConstraints().addAll(column1, column2); 
// first column gets any extra width

百分百大小

或者,RowConstraints 和ColumnConstraints可以通过指定百分百来实现。

     GridPane gridpane = new GridPane();
     ColumnConstraints column1 = new ColumnConstraints();
     column1.setWidthPercent(50);

     ColumnConstraints column2 = new ColumnConstraints();
     column2.setWidthPercent(50);

     gridpane.getColumnConstraints().addAll(column1, column2); // each get 50% of width

指定百分百后,行列的三个最值都会被忽略。

如果百分百总值超过了100,它们的值会被当成权重。

 

可选布局约束

约束 类型 描述
halignment javafx.geometry.HPos 布局区域中孩子结点的水平位置.
valignment javafx.geometry.VPos 布局区域中孩子结点的垂直位置.
hgrow javafx.scene.layout.Priority 孩子结点的水平成长优先级.
vgrow javafx.scene.layout.Priority 孩子结点的垂直成长优先级.
margin javafx.geometry.Insets 孩子结点的外部边空间.
分享到:
评论

相关推荐

    JavaFX2.0网格布局窗格GridPane(中文版)

    JavaFX 2.0 网格布局窗格 GridPane 中文版 JavaFX 2.0 网格布局窗格 GridPane 是 JavaFX 库中的一个重要组件,用于创建灵活的网格布局窗格。GridPane 将其孩子结点灵活地放置在行列网格中,允许开发者自由地控制...

    JavaFX高级教程:JavaFX2.0的FXML语言(中文版)

    JavaFX 2.0 是一个强大的富互联网应用程序(RIA)平台,用于构建具有美观图形界面的应用程序。在JavaFX 2.0中,FXML(FXML Language)被引入,这是一种基于XML的声明性语言,专门用于定义应用程序的用户界面。这个...

    javaFX高级教程JavaFX2.0的FXML语言 中文文档

    ### JavaFX 2.0 的 FXML 语言高级教程 #### 概述 JavaFX 2.0 引入了一种新的声明性标记语言——FXML(发音为 “fizz-le”),这是一种基于 XML 的语言,专门用于定义应用程序的用户界面。通过使用 FXML,开发者...

    javafx 2.0 布局入门

    JavaFX 2.0 提供了多种布局管理器,包括但不限于 `BorderPane`、`FlowPane`、`GridPane`、`HBox` 和 `VBox`。 #### 三、具体布局管理器介绍 ##### 1. `BorderPane` `BorderPane` 是一个非常灵活的布局管理器,它...

    javafx2.0 中文文档.zip

    这个“javafx2.0 中文文档.zip”压缩包包含了关于JavaFX 2.0的中文文档,对于理解和学习这个技术至关重要。 首先,JavaFX 2.0的核心是它的 scenegraph 模型,这是一种基于节点的对象模型,用于构建复杂的用户界面。...

    JavaFX 2.0 電子書 - Pro JavaFX 2

    最新JavaFx 2.0 電子書 In Pro JavaFX 2: A Definitive Guide to Rich Clients with Java Technology, Jim Weaver, Weiqi Gao, Stephen Chin, Dean Iverson, and Johan Vos show you how you can use the JavaFX ...

    javafx2.0官方例子

    javafx2.0,java,javafx,例子,代码 Sun公司(已于20092008年12月05日发布了JavaFX技术的正式版,它使您能利用 JavaFX 编程语 言开发富互联网应用程序(RIA)。JavaFX Script编程语言(以下称为JavaFX)是Sun微...

    JavaFX 2.0 Introduction by Example.zip

    JavaFX 2.0 Introduction by Example.zip是javafx2.0的最新书籍《[JavaFX.2.0:Introduction.by.Example].Carl.Dea》上的源码!大家可以下载本书和源码一起看!我都上传了!

    JavaFx2.0入门指南

    JavaFX 2.0 入门指南是针对那些希望通过JavaFX快速开发富用户体验应用程序的开发者设计的。这个指南,源自Oracle官方,包含了中英文对照,旨在帮助初学者快速上手。在本文档中,你将学习如何利用JavaFX创建一个名为...

    JavaFX2.0内建控件教程(全部控件)

    ### JavaFX 2.0 内建控件教程 #### 1. UI控件概览 JavaFX 2.0 提供了一系列丰富的内置用户界面(UI)控件,这些控件可以帮助开发者快速构建美观且功能强大的应用程序。JavaFX UI 控件位于 `javafx.scene.control` ...

    javafx2.0在netbeans插件

    5. **FXML 设计**:JavaFX 2.0 引入了 FXML(FXML Layout),这是一种声明式的 UI 设计语言,允许开发者将界面布局和业务逻辑分离。NetBeans 插件支持 FXML 编辑,可以使用 GUI 编辑器可视化地设计界面。 6. **...

    JavaFX2.0基础教程.pdf

    ### JavaFX2.0基础教程知识点总结 #### 1. JavaFX概览 - **JavaFX认知**:JavaFX是一个由Java技术构建的平台,它旨在简化富互联网应用程序(RIA)的创建与部署过程,这些应用程序能够跨多个平台运行并且具有统一的...

    Javafx 2.0: Introduction by Example

    Javafx 2.0: Introduction by Example

    JavaFX2.0基础教程(整合版)

    JavaFX2.0平台是java客户端设计演进,使应用开发者易于创建和部署跨平台且表现一致的Rich Internet Application(RIAs)。JavafX是由Java技术构建,基于高性能硬件加速的媒体和图形引擎,JavaFX平台提供了一套丰富的...

    javafx_2.0_introduction_by_example

    根据给定文件的信息,我们可以提炼出关于JavaFX 2.0的重要知识点,这些知识点涵盖了JavaFX的基本概念、架构策略、发展历程以及其在图形用户界面(GUI)开发中的应用。 ### JavaFX 2.0:下一代GUI工具包 JavaFX 2.0...

Global site tag (gtag.js) - Google Analytics