在尝试找到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()加载。目前,两个组件在传递到舞台之前都已添加到Panel中。它们包含一个OnClickEvent用于处理。
现在回答实际问题
如果单击一个Component,另一个是从css按下来的,我怎么能实现呢?
是否有可能向所有孩子发出通知,他们应该表现得像被按下一样?由于我们有很多小的Icon,但文本只有一个背景,因此在整个事物上放置一个Label会产生大量不必要的浪费图像空间。如果不是所有的css都被一次更改,这也会导致更改字体颜色的问题(带有.setMouseTransparent(true)
的按钮标签解决方案不会改变文本标签的字体颜色,因为标签不是& #39; t按下通知按钮)
答案 0 :(得分:0)
首先,JFX-8将支持更广泛的CSS改进,这将使您更容易解决问题。
要解决您的问题,我可以建议以下内容:每个节点都有一个按下的属性。您可以在此属性上添加侦听器,当它更改为true时,在所需节点上使用setStyle(String)方法,并在更改为false时使用setStyle(null |“”)。