(颜色)Java中没有点

时间:2017-09-02 05:22:30

标签: java javafx

在从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()
                );
         }
    });

1 个答案:

答案 0 :(得分:2)

setget-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());