先看问题:
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必备!
JavaFX是Java平台上的一个应用程序接口(API),用于构建丰富的用户界面。在早期版本的Java Development Kit (JDK) 中,JavaFX是一个内置组件,包括了`jfxrt.jar`这个重要的库文件,它包含了运行JavaFX应用所需的...
总之,e(fx)clipse是JavaFX开发者在Eclipse环境下不可或缺的工具,它提供了从项目创建、代码编写到调试运行的一站式解决方案,极大地简化了JavaFX应用的开发流程。通过熟练掌握这款插件的使用,开发者可以更专注于...
在这个“javafx显示多个窗口以及javafx多窗口之间数据交互传输项目原文件”中,我们可以学习到如何在JavaFX中创建并管理多个窗口,以及在这些窗口之间进行数据的交换和传递。 1. **创建JavaFX窗口** 在JavaFX中,...
这不仅有助于提升JavaFX应用的功能,还能为解决实际问题提供强大的工具。同时,对于希望深入研究和改进退火算法的人来说,这是一个宝贵的资源,他们可以从现有的实现中汲取灵感,进行算法的优化和创新。
javafx
JavaFX PDF阅读软件是一款基于JavaFX技术开发的PDF文档查看应用程序。它利用开源库icepdf来解析和渲染PDF文档,为用户...开发者可以通过这个项目学习到JavaFX的GUI编程、事件处理、以及利用开源库解决实际问题的方法。
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 的相关...
2. performance 问题:JavaFX 应用程序的性能可能会受到影响,例如在低配置设备上运行时。 JavaFX 是一个功能强大且灵活的平台,适用于开发桌面应用程序、移动应用程序和网络应用程序。但是,JavaFX 的学习曲线陡峭...
在这个过程中,你会了解到如何在JavaFX中使用各种控件,如TableView的行选择和ObservableLists的数据绑定,以及如何通过MVC模式分离业务逻辑和界面显示。此外,你还将掌握如何利用Scene Builder的拖放功能来快速搭建...
JavaFx登录跳转完整教程含源码 本教程将指导读者如何使用JavaFx创建一个完整的登录跳转系统,包括登录页面的设计、验证账号密码、跳转到应用程序的首页等步骤。 知识点1:JavaFx简介 JavaFx是Oracle公司推出的一...
最新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 ...
OpenJDK8 with JavaFX 是一个开放源代码的Java开发工具包,它包含了Java标准版(Java SE)的实现,以及JavaFX库。OpenJDK是Oracle JDK的开源替代品,由OpenJDK社区维护和开发,而JavaFX是构建桌面、移动和Web应用...
JavaFX是一种用于构建桌面、移动和嵌入式设备上的富客户端应用程序的框架,自Java 7版本开始成为标准的一部分。这个“简单的JavaFX登录”项目是利用JavaFX库创建的一个基本用户登录界面,旨在帮助开发者了解如何在...