gpt4 book ai didi

css - 为所有 child 设置与 parent 相同的状态

转载 作者:太空宇宙 更新时间:2023-11-03 18:46:22 26 4
gpt4 key购买 nike

在尝试找到 Centering Text on a Button with Offset 的解决方案之后,我现在正在做一个自定义组件。目标是制作一个类似按钮的组件,在一侧有一个图标,并在按钮的其余部分填充一个居中的文本。

该组件包含两个标签/按钮以显示图标和文本。它们都有一个背景图像,在 css 中定义。

Icon 的 css 看起来像这样,文本交换图像作为背景

#button-icon-cancel{
-fx-font-family: "Arial";
-fx-padding: 0,0,0,0;
-fx-background-color: transparent;
-fx-font-size: 28px;
-fx-graphic: url('images/button/cancel.png');
}

#button-icon-cancel:pressed{
-fx-graphic: url('images/button/cancel-pressed.png');
}

图像由 setId() 加载。目前,这两个组件在传递到舞台之前都被添加到面板中。它们包含一个用于处理的 OnClickEvent。

现在进入实际问题

如果单击一个组件,另一个组件也从 css 获取 :pressed,我该如何实现?

  • 将 ClickEvent 添加到面板没有做任何事情(关于点击标签/按钮)
  • 将它们都添加到 HBox,将事件添加到 HBox 在这方面起作用,我可以单击任一组件并触发事件,但 :pressed 状态仅应用于您单击的组件。<

是否可以通知所有 child ,让他们表现得像被逼迫一样?由于我们有很多小图标,但只有一个文本背景,在整个图标上放置一个标签会产生大量不必要的浪费图像空间。如果不是所有的 css 都立即更改,这也会导致更改字体颜色的问题(带有 .setMouseTransparent(true) 的 label-over-button-solution 不会更改文本的字体颜色标签,因为标签没有注意到按钮被按下)

最佳答案

首先,JFX-8 将支持更广泛的 css 改进,这将使您更容易解决问题。

为了解决您的问题,我可以提出以下建议:每个节点都有一个 pressed 属性。您可以在此属性上添加一个监听器,当它变为 true 时,在需要的节点上使用 setStyle(String) 方法,并在变为 false 时使用 setStyle(null | "") 。

关于css - 为所有 child 设置与 parent 相同的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16296460/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com