在尝试找到使用 Offset 在按钮上居中文本的解决方案后,我现在正在做一个自定义组件。目标是制作一个类似按钮的组件,在一侧有一个图标,而在按钮的其余部分则有一个居中的文本。
该组件包含两个标签/按钮来显示图标和文本。它们都有一个背景图像,在 css 中定义。
图标的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 状态仅应用于您单击的组件。
是否可以向所有孩子发出通知,让他们表现得像被按下一样?由于我们有很多小图标,但文本只有一个背景,因此在整个事物上放置一个标签会浪费大量不必要的图像空间。如果不是一次更改所有 css,这也会导致更改字体颜色的问题(label-over-button-solution.setMouseTransparent(true)
不会更改文本标签的字体颜色,因为标签没有注意到按钮被按下)