如何获取布局父节点的-fx-font-size属性值?
如何获取布局父节点的-fx-font-size属性值?
嘿,我来帮你搞定这个问题!你想要获取MyNode的布局父节点(比如你例子里的VBox)的-fx-font-size属性值,其实有几种简单可靠的方法,我给你详细说说:
首先要注意:必须等你的MyNode被添加到布局父节点之后再去获取,不然
getParent()会返回null,根本拿不到父节点对象哦。方法一:直接获取父节点的实际字体大小
CSS里的-fx-font-size最终会映射到节点的Font属性上,所以咱们可以直接调用父节点的getFont().getSize()来拿到对应的数值。代码示例:// 假设你的MyNode实例是myNode Parent parent = myNode.getParent(); if (parent != null) { double parentFontSize = parent.getFont().getSize(); // 这里parentFontSize就是父节点的-fx-font-size对应的值啦 }如果你确定父节点是VBox这种具体的布局类,也可以强转后调用:
if (myNode.getParent() instanceof VBox) { VBox vBoxParent = (VBox) myNode.getParent(); double fontSize = vBoxParent.getFont().getSize(); }方法二:监听父节点变化(更稳妥)
有时候你可能不确定节点什么时候被添加到父节点,这时候可以监听parentProperty()的变化,确保在父节点存在时再获取值:myNode.parentProperty().addListener((observable, oldParent, newParent) -> { if (newParent != null) { double parentFontSize = newParent.getFont().getSize(); // 在这里处理拿到的字体大小值 } });小提醒:如果父节点的
-fx-font-size是通过外部CSS文件设置的,完全不用担心!JavaFX会自动把CSS样式应用到节点的Font属性上,所以getFont().getSize()依然能拿到正确的计算后的值。
备注:内容来源于stack exchange,提问作者SilverCube
相关产品推荐
相关产品推荐

