在Javafx中动态更改矩形的颜色

我在中创建两个javafx.scene.shape.Rectangle对象,GridPane然后执行以下操作。

rectArray = new Rectangle[2];

boardGrid.setStyle("-fx-background-color: #C0C0C0;");

rectArray[0] = new Rectangle(12,12);

rectArray[0].setFill(Color.AQUA);

boardGrid.add(rectArray[0], 2, 0);

rectArray[1] = new Rectangle(12,12);

rectArray[1].setFill(Color.BLACK);

boardGrid.add(rectArray[1], 2, 1);

Button buttonStart = new Button("Change color");

buttonStart.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {

@Override

public void handle(MouseEvent event) {

rectArray[0].setFill(Color.RED);

try {

Thread.sleep(2000);

}

catch (InterruptedException e) {

e.printStackTrace();

}

rectArray[1].setFill(Color.AZURE);

}

});

boardGrid.add(buttonStart, 3, 1);

initializeScene(primaryStage, boardGrid);

...

运行代码时,我可以看到两个矩形(一个在Aqua中,一个在黑色中),当我单击按钮时,我必须等待2秒钟才能查看两个矩形的颜色变化。

我先更改一个矩形的颜色,Thread.sleep(2000)然后再更改下一个矩形的颜色。

我的问题是为什么我应该等待2秒?有没有一种方法可以动态更新矩形的颜色?

回答:

您正在UI线程上睡眠,该线程会阻止任何进一步的处理(包括刷新屏幕)。

如果需要延迟某些代码,则可以使用PauseTransition等待两秒钟,并onFinished在等待后使用其方法来运行其余代码。

以上是 在Javafx中动态更改矩形的颜色 的全部内容, 来源链接: utcz.com/qa/422292.html

回到顶部