在从UserData获取颜色时,下面的代码中是否有任何方法可以将(Color)
替换为标准Color.
(带点)?
这一行
rect.setFill((Color) group.getSelectedToggle().getUserData()
基于Oracle doc关于ToggleButton的更广泛的代码片段
tb1.setUserData(Color.LIGHTGREEN);
tb2.setUserData(Color.LIGHTBLUE);
tb3.setUserData(Color.SALMON);
final Rectangle rect = new Rectangle(145, 50);
final ToggleGroup group = new ToggleGroup();
group.selectedToggleProperty().addListener(new ChangeListener<Toggle>(){
public void changed(ObservableValue<? extends Toggle> ov,
Toggle toggle, Toggle new_toggle) {
if (new_toggle == null)
rect.setFill(Color.WHITE);
else
rect.setFill(
(Color) group.getSelectedToggle().getUserData()
);
}
});
答案 0 :(得分:2)
set
和get
-UserData
采取/返回Object
类型。
您需要(Color)
施放 group.getSelectedToggle().getUserData()
除非我误解了这个问题,否则不需要成为替换该值的方法,因为这些是Toggle
上定义的属性...换句话说,返回的值相当于之前为该Toggle定义的Color.<VALUE>
。
您的代码可以重写为
Color newColor;
if (new_toggle == null)
newColor = Color.WHITE;
else
newColor = (Color) group.getSelectedToggle().getUserData();
rect.setFill(newColor);
或使用三元表达式
rect.setFill(new_toggle == null ? Color.WHITE : (Color) group.getSelectedToggle().getUserData());