javafx循环while按钮按下
问题描述:
当按下按钮时,我无法获得此循环,并且释放按钮时停止循环。javafx循环while按钮按下
btnUp.pressedProperty().addListener((observable, wasPressed, pressed) -> {
System.out.println("changed");
if (pressed) {
System.out.println("pressed");
while(btnUp.isArmed()){
try
{
Thread.sleep(1000);
}
catch(InterruptedException ex)
{
Thread.currentThread().interrupt();
}
//moveflag = false;
System.out.println("pressed");
}
} else {
System.out.println("released");
}
});
答
- 不要使用Thread.sleep()方法的UI操作中,它会阻止所有UI绘制
- 不同时里面的ChangeListener使用,只是有一个独立的循环,检查按钮的状态
-
时间表最适合这样的循环
public void start(Stage stage) { Button btn = new Button("Press me"); Timeline timeline = new Timeline(new KeyFrame(Duration.seconds(1), (ActionEvent event) -> { // this code will be called every second System.out.println(btn.isPressed() ? "pressed" : "released"); })); timeline.setCycleCount(Timeline.INDEFINITE); timeline.play(); StackPane root = new StackPane(); root.getChildren().add(btn); Scene scene = new Scene(new StackPane(btn), 300, 250); stage.setTitle("Hello World!"); stage.setScene(scene); stage.show();
}
谢谢,它像一个魅力工作! –
@Folieadeux:您可以点击左侧的[空勾号](http://meta.*.com/a/5235/163188)来接受答案。 – trashgod