先看问题:
var rec1: Rectangle;
var stage: Stage = Stage {
title: "Rectangles"
width: 200
height: 200
scene: Scene {
content: [
VBox {
spacing: 0
content: [
rec1 = Rectangle {
fill: Color.BLACK
width: bind stage.scene.width
height: 50
}
Rectangle {
fill: Color.GRAY
width: bind stage.scene.width
height: bind stage.scene.height - rec1.height
stroke: Color.BLACK
}
]
}
]
}
}
显示如下:
结果发现下面的矩形缺少了右侧和底部的描边。查看API也没有找到原因,后来做个小实验,发现原来描边操作是在原有图形的边框上添加的。
测试:
function run() {
var rec1 = Rectangle { width: 140, height: 90 };
var rec2 = Rectangle { width: 140, height: 90, stroke: Color.BLACK };
println("width={rec1.width} and height={rec1.height}");
println("width={rec1.layoutBounds.width} and height={rec1.layoutBounds.height}");
println("width={rec2.width} and height={rec2.height}");
println("width={rec2.layoutBounds.width} and height={rec2.layoutBounds.height}");
}
结果:
width=140.0 and height=90.0
width=140.0 and height=90.0
width=140.0 and height=90.0
width=142.41422 and height=92.414215
注意width和layoutBounds.width的区别!
解决问题的办法:
var rec1: Rectangle;
var tmp1 = Rectangle { stroke: Color.BLACK };
var tmp2 = Rectangle { };
var gap = tmp1.layoutBounds.width-tmp2.layoutBounds.width;
var stage: Stage = Stage {
title: "Rectangles"
width: 200
height: 200
scene: Scene {
content: [
VBox {
spacing: 0
content: [
rec1 = Rectangle {
fill: Color.BLACK
width: bind stage.scene.width
height: 50
}
Rectangle {
fill: Color.GRAY
width: bind stage.scene.width - gap
height: bind stage.scene.height - rec1.layoutBounds.height - gap
stroke: Color.BLACK
}
]
}
]
}
}
显示如下:
问题是解决了,但是总感觉哪里有些别扭,难道JavaFX就没有相关的常量来记录这个差距吗?或者有其他的办法来解决这个问题,期待更好的解决办法。
- 大小: 6.2 KB
- 大小: 6.6 KB
分享到:
相关推荐
JavaFX 是一个用于开发桌面、移动和Web应用的富客户端平台,它提供了丰富的图形用户..."JPDFViewerFx"可能提供了一种现成的解决方案,简化了这个过程,使得开发者可以更轻松地集成PDF查看功能到他们的JavaFX应用中。
在本篇JavaFX+Jfoenix学习笔记中,我们将探讨如何在JavaFX应用程序中实现系统托盘功能,以及如何解决可能出现的中文乱码问题。系统托盘是现代桌面应用中常见的一种特性,允许用户在关闭主窗口后,仍然可以通过托盘...
JavaFX 2.0 全套教程, 非常齐全的pdf文档,学习JavaFX 2.0必备!
总之,e(fx)clipse是JavaFX开发者在Eclipse环境下不可或缺的工具,它提供了从项目创建、代码编写到调试运行的一站式解决方案,极大地简化了JavaFX应用的开发流程。通过熟练掌握这款插件的使用,开发者可以更专注于...
JavaFX是Java平台上的一个应用程序接口(API),用于构建丰富的用户界面。在早期版本的Java Development Kit (JDK) 中,JavaFX是一个内置组件,包括了`jfxrt.jar`这个重要的库文件,它包含了运行JavaFX应用所需的...
在这个“javafx显示多个窗口以及javafx多窗口之间数据交互传输项目原文件”中,我们可以学习到如何在JavaFX中创建并管理多个窗口,以及在这些窗口之间进行数据的交换和传递。 1. **创建JavaFX窗口** 在JavaFX中,...
JavaFX PDF阅读软件是一款基于JavaFX技术开发的PDF文档查看应用程序。它利用开源库icepdf来解析和渲染PDF文档,为用户...开发者可以通过这个项目学习到JavaFX的GUI编程、事件处理、以及利用开源库解决实际问题的方法。
这不仅有助于提升JavaFX应用的功能,还能为解决实际问题提供强大的工具。同时,对于希望深入研究和改进退火算法的人来说,这是一个宝贵的资源,他们可以从现有的实现中汲取灵感,进行算法的优化和创新。
javafx
JavaFX是一种用于构建桌面应用程序的Java库,它提供了丰富的用户界面工具和功能,可以创建出美观、交互性强的图形...同时,解决过程中遇到的问题,如错误调试和图像格式转换,也是提升开发者问题解决能力的重要环节。
JavaFX 是一个用于构建桌面、移动和嵌入式设备上富客户端应用的开源图形用户界面(GUI)工具包。它是Java平台的一部分,提供了一系列高级特性,包括2D和3D图形处理、媒体支持、CSS样式以及强大的数据绑定机制。本...
JavaFX SDK 11.0.2 是一个用于开发富客户端应用程序的工具包,它在Java 11及更高版本中不再作为标准JDK的一部分。这个独立的SDK提供了必要的库和工具,使得开发者能够在Java平台上构建具有丰富图形用户界面(GUI)的...
确保在项目中包含 Web 和 JDBC 依赖,因为 JavaFX 是桌面应用,所以不需要 Web 服务器,但需要 JDBC 来与数据库进行交互。 2. **添加 JavaFX 依赖** 在 Maven 或 Gradle 的配置文件中,我们需要添加 JavaFX 的相关...
在这个过程中,你会了解到如何在JavaFX中使用各种控件,如TableView的行选择和ObservableLists的数据绑定,以及如何通过MVC模式分离业务逻辑和界面显示。此外,你还将掌握如何利用Scene Builder的拖放功能来快速搭建...
JavaFx登录跳转完整教程含源码 本教程将指导读者如何使用JavaFx创建一个完整的登录跳转系统,包括登录页面的设计、验证账号密码、跳转到应用程序的首页等步骤。 知识点1:JavaFx简介 JavaFx是Oracle公司推出的一...
2. performance 问题:JavaFX 应用程序的性能可能会受到影响,例如在低配置设备上运行时。 JavaFX 是一个功能强大且灵活的平台,适用于开发桌面应用程序、移动应用程序和网络应用程序。但是,JavaFX 的学习曲线陡峭...
OpenJDK8 with JavaFX 是一个开放源代码的Java开发工具包,它包含了Java标准版(Java SE)的实现,以及JavaFX库。OpenJDK是Oracle JDK的开源替代品,由OpenJDK社区维护和开发,而JavaFX是构建桌面、移动和Web应用...
在多线程环境下,如果程序退出时没有正确地关闭后台线程,可能会导致资源未能释放,或者产生数据不一致等问题。因此,在JavaFX中监听窗口关闭事件是十分必要的。 在JavaFX中,可以通过给Stage的onCloseRequest属性...
最新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 ...