JavaFX 2.0布局窗格– BorderPane
BorderPane
非常适合开发更复杂的布局。 通常, BorderPane
提供五个不同的区域:顶部,右侧,底部,左侧和中央。 您可以通过调用setTop/setBottom/set…
方法将Node
设置到每个区域。 这种方法使开发“类似于网站”的应用程序窗口变得非常容易,您可以在其中的菜单栏或工具栏在顶部,左侧导航,在底部有某种页脚,在中心区域显示您的主要内容右侧的其他信息。
重要的是要知道,每个区域的大小都不同:
- 顶部和底部区域将调整为其子级的首选高度,并占用其宽度的所有可用空间。
- 左侧和右侧区域将调整其子级的首选宽度,并占用其高度的所有可用空间。
- 中心区域占用了其高度和宽度的所有可用空间。
下图演示了调整应用程序窗口大小时BorderPane
的行为:
资料来源:自己的插图 |
BorderPane –示例
/*** Created on: 29.03.2012* @author Sebastian Damm*/
public class BorderPaneExample extends Application
{private BorderPane root;@Overridepublic void start(Stage primaryStage) throws Exception{root = new BorderPane(); root.setTop(getMenu());root.setRight(getRightHBox());root.setBottom(getFooter());root.setLeft(getLeftHBox());root.setCenter(getCenterPane());Scene scene = new Scene(root, 900, 500); primaryStage.setTitle("BorderPane Example");primaryStage.setScene(scene);primaryStage.show(); }private MenuBar getMenu(){MenuBar menuBar = new MenuBar();Menu menuFile = new Menu("File"); Menu menuEdit = new Menu("Edit");Menu menuHelp = new Menu("Help"); menuBar.getMenus().addAll(menuFile, menuEdit, menuHelp);return menuBar;}private HBox getRightHBox(){HBox hbox = new HBox();VBox vbox = new VBox(50);vbox.setPadding(new Insets(0, 20, 0, 20));vbox.setAlignment(Pos.CENTER);vbox.getChildren().addAll(new Text("Additional Info 1"), new Text("Additional Info 2"), new Text("Additional Info 3")); hbox.getChildren().addAll(new Separator(Orientation.VERTICAL), vbox); return hbox;}private HBox getLeftHBox(){HBox hbox = new HBox();VBox vbox = new VBox(10);vbox.setPadding(new Insets(10));Text text = new Text("Navigation");text.setFont(Font.font("Helvetica", FontWeight.BOLD, 20));VBox vboxText = new VBox(10);for (int i = 1; i >= 10; i++){vboxText.getChildren().add(new Text("Category " + i));} vboxText.setTranslateX(10);vbox.getChildren().addAll(text, vboxText); hbox.getChildren().addAll(vbox, new Separator(Orientation.VERTICAL));return hbox;}private VBox getFooter(){VBox vbox = new VBox();HBox hbox = new HBox(20);hbox.setPadding(new Insets(5));hbox.setAlignment(Pos.CENTER);hbox.getChildren().addAll(new Text("Footer Item 1"), new Text("Footer Item 2"), new Text("Footer Item 3")); vbox.getChildren().addAll(new Separator(), hbox);return vbox;}private StackPane getCenterPane(){StackPane stackPane = new StackPane();stackPane.setAlignment(Pos.CENTER);Rectangle rec = new Rectangle(200, 200);rec.setFill(Color.DODGERBLUE);rec.widthProperty().bind(stackPane.widthProperty().subtract(50));rec.heightProperty().bind(stackPane.heightProperty().subtract(50));stackPane.getChildren().addAll(rec);return stackPane;}public static void main(String[] args){Application.launch(args);}
}
这个小应用程序展示了如何使用BorderPane
。 在start
方法中,我们仅使用BorderPane
类的各种set…
方法,以便使用Node
填充每个区域。
顶部区域充满了MenuBar
。 在这里,我简单地创建一个带有三个不同Menus
的MenuBar
。 在我的下一篇文章中,我将深入介绍JavaFX中菜单的创建。
除了菜单外,代码的一个方面可能对您来说是新的。 请看一下第100行:
BorderPane
的中心区域填充了一个拥有Rectangle
的StackPane
。 由于Rectangle
不会直接使用其父对象(如所有Shape
对象)直接调整大小,因此,当我们想调整Rectangle
大小时,我们必须采用其他方法。 这就是为什么我将Rectangle
的宽度和高度绑定到StackPane
的宽度和高度(减去50个像素)的原因。 更改StackPanes
的大小时, Rectangle
将相应地自动调整大小。
这是有关应用程序外观和大小调整的三张图片:
如您所见, BorderPane
的不同区域BorderPane
根据我在本文顶部说明的规则进行相应调整。
参考: JavaFX 2.0布局窗格–来自我们JCG合作伙伴 Sebastian Damm的BorderPane在Java博客上的Just my 2 cents 。
翻译自: https://www.javacodegeeks.com/2012/07/javafx-20-layout-panes-borderpane.html
JavaFX 2.0布局窗格– BorderPane相关推荐
- JavaFX 2.0布局窗格– FlowPane和TilePane
FlowPanes和TilePanes是不错的布局窗格,如果您想一个接一个地连续地水平或垂直地布局子级,则可以. 它们彼此非常相似,因为它们都将子级布置成列(在水平Flow / TilePane的情况 ...
- JavaFX 2.0布局窗格– HBox和VBox
如果要对JavaFX 2.0中所有不同的布局窗格进行概述,或者想了解有关它们的一些基本知识,请参阅我以前的文章< JavaFX 2.0中的布局窗格> . 布局窗格HBox和VBox绝对是J ...
- JavaFX 2.0布局窗格– GridPane
毫无疑问, GridPane是JavaFX 2.0中功能最强大,最灵活的布局窗格. 它在由行和列组成的灵活网格中布置其子项,与Swing的GridBagLayout或HTML的表格模型非常相似. 这种 ...
- JavaFX 2.0 Hello World
在讨论示例本身之前,我想向您展示如何在NetBeans中创建JavaFX应用程序. (如果尚未安装JavaFX和NetBeans,请参阅我以前的文章< 安装JavaFX 2.0和NetBeans ...
- JavaFX七巧板游戏:布局窗格Panes
JavaFX布局之各种Panes 上次写博客还是上次. 自开始把这两东西一起学Kotlin+JavaFX的顺滑已经过去差不多5个月,联盟--都是废物.我已经编了大概3个小的应用软件,申请了两个软件著作 ...
- java fx fxml界面_使用 JavaFX 2.0 FXML 呈现企业应用程序的 UI
使用 JavaFX 2.0 FXML 呈现企业级应用程序 UI 作者:James L. Weaver 使用 FX 标记语言的强大功能定义企业级应用程序的 UI. 2012 年 6 月发布 下载: :示 ...
- javafx sdk html 布局,JavaFX2开发教程
JavaFX2开发教程 更新时间:2017/1/24 18:04:00 浏览量:851 手机版 第一回 JavaFX2.0简介 javaFX2.0是JavaFX最新的主要升级发布版.它的很多新特性 ...
- JavaFX 2.0示例介绍书
我最近完成了有关JavaFX 2.0 SDK新版本的书的编写,并且已经将它放在您附近的书店( Amazon )的书架上. 该书将逐步指导您完成JavaFX 2.0的来龙去脉. 当您遇到一章时,将看到一 ...
- 从JavaFX 1.3迁移到JavaFX 2.0
几天前,我完成了将Modellus的源代码从JavaFX 1.3脚本迁移到JavaFX 2.0 Java语言的过程. 因此,我认为写关于我在此过程中学到的知识会很好. 我想指出,如果您想继续在Java ...
最新文章
- 【组队学习】【24期】集成学习(中)
- 测试优惠券要怎么写测试用例?
- Loadrunner压测时,出现的问题汇总
- Distributed Systems-leader based分布式一致性协议
- CTF-杂项与密码学之工具使用汇总(三)
- vaniglia 源码学习 (六)
- 13个Pandas实用技巧,有点香 !
- C语言CRC32 逆向算法源码
- 从页面底部向上弹出dialog,消失时逐渐向下(转)
- 深圳增强互动科技_增强女性在科技领域的十项原则
- Postgresql 插入json数据
- linux内核 can总线,基于Linux的PC104总线与CAN总线通信设计
- iOS定位-核心定位框架CLLocation
- Spss-kmeans聚类分析操作
- chronodex怎么用_滴答清单使用全攻略:如何把手帐搬到滴答清单上,提升效率?...
- Netty + JavaFx 实战:仿桌面版微信聊天
- 论文复现——CE-FPN: Enhancing Channel Information for Object Detection
- android安装到内存卡,android手机怎么把软件安装到内存卡里
- [agc012e]Camel and Oases
- JAVA探针机制—Agent(一)
热门文章
- nginx负载均衡与反向代理
- java isempty_Optional.isEmpty()即将加入Java吗?
- cloudwatch_将CloudWatch Logs与Cloudhub Mule集成
- 子模板继承父模板示例_模板设计模式示例
- 什么是通用字符名称?_通用名称
- spring batch_Spring Batch作为Wildfly模块
- Java代理初学者指南
- Java 12新功能完整指南
- 在Spring Boot启动时运行代码
- cargo maven_与Maven 3,Failsafe和Cargo插件的集成测试