在单击时仅更改矩形的颜色,我的逻辑在哪里出问题?
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);
}
});
答案 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