如何更改矩形的颜色?

时间:2019-03-05 23:59:02

标签: javafx

在单击时仅更改矩形的颜色,我的逻辑在哪里出问题?

        square.setFill(null);
        square.setStroke(Color.BLACK);
        setAlignment(Pos.CENTER);
        getChildren().addAll(square);

        setOnMouseClicked(event ->{
            if(event.getButton() == MouseButton.PRIMARY) {              
                square.setFill(Color.BLUE);
            }
            else if(square.getFill().equals(Color.BLUE)) {
                    square.setFill(Color.BLACK);
            }


        });

3 个答案:

答案 0 :(得分:1)

我认为您不需要布尔标志。您可以按照以下步骤进行操作:

setOnMouseClicked(event -> {
    if (event.getButton() == MouseButton.PRIMARY) {
       square.setFill(square.getFill() == Color.BLUE ? Color.BLACK : Color.BLUE);
    }
});

答案 1 :(得分:0)

我最终使用布尔值来标记矩形是否为蓝色。

        square.setFill(null);
        square.setStroke(Color.BLACK);
        setAlignment(Pos.CENTER);
        getChildren().addAll(square);

        setOnMouseClicked(event ->{
            if(event.getButton() == MouseButton.PRIMARY) {              
                if(!isBlue) {
                    square.setFill(Color.BLUE);
                    isBlue = true;
                }
                else if(isBlue) {

                    square.setFill(Color.BLACK);
                    isBlue = false;
                }
            }
        });

答案 2 :(得分:0)

使用变量可能会发现的问题是,必须为每个要支持更改颜色的对象跟踪一个变量,否则所有更改颜色的对象都将在同一变量上触发。 / p>

我认为您可以保留原始代码,我想问题是您的if语句:

id

如果您查看它,则条件是getButton为主要按钮,如果为true,它将始终将其设置为蓝色,如果用户未使用主要按钮,则只有在颜色为彩色的情况下它将设置为黑色是蓝色的。

您想要类似的东西

list livebroadcast