设置所有子项的状态与父项相同

时间:2013-04-30 09:25:05

标签: css javafx-2

在尝试找到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按下来的,我怎么能实现呢?

  • 将ClickEvent添加到Panel中没有任何操作(关于单击Label / Button)
  • 将它们添加到HBox中,在这方面将事件添加到HBox工作,我可以单击任一组件并触发事件,但是:按下状态仅应用于您单击的组件。

是否有可能向所有孩子发出通知,他们应该表现得像被按下一样?由于我们有很多小的Icon,但文本只有一个背景,因此在整个事物上放置一个Label会产生大量不必要的浪费图像空间。如果不是所有的css都被一次更改,这也会导致更改字体颜色的问题(带有.setMouseTransparent(true)的按钮标签解决方案不会改变文本标签的字体颜色,因为标签不是& #39; t按下通知按钮)

1 个答案:

答案 0 :(得分:0)

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

要解决您的问题,我可以建议以下内容:每个节点都有一个按下的属性。您可以在此属性上添加侦听器,当它更改为true时,在所需节点上使用setStyle(String)方法,并在更改为false时使用setStyle(null |“”)。