检查按下按钮的时间

时间:2017-11-13 15:03:53

标签: java javafx actionlistener mouselistener

我正在制作一个模拟器,根据印刷的持续时间,我有一个具有不同行为的按钮。

如果按下的按钮少于3秒,则不打印,介于3和10之间,打印1和高于10打印2。

我应该尝试MouseListener还是ActionListener?任何示例代码都会很棒!感谢。

2 个答案:

答案 0 :(得分:1)

收听被按下的属性中的更改:

public class StageTest extends Application{

    private long startTime;

    @Override
    public void start(Stage primaryStage) {

        Button btn = new Button("Hold");
        Label label= new Label();
        btn.pressedProperty().addListener((obs, wPressed, pressed) -> {
            if (pressed) {
               startTime =  System.nanoTime();
               label.setText("");
            } else {
                label.setText("Button was pressed for "+ (System.nanoTime() - startTime) + " nanos");
            }
        });
        Pane root = new VBox(btn, label);
        Scene scene = new Scene(root, 300, 100);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch();
    }
}

答案 1 :(得分:0)

一个简单的黑客: 按下按钮后立即创建计时器并启动计时器。将计时器的间隔设置为1秒,然后使计数器在每次触发计时器事件时递增,以跟踪按下的秒数。释放按钮后立即停止计时器并执行您想要的任何操作