我正在制作一个模拟器,根据印刷的持续时间,我有一个具有不同行为的按钮。
如果按下的按钮少于3秒,则不打印,介于3和10之间,打印1和高于10打印2。
我应该尝试MouseListener
还是ActionListener
?任何示例代码都会很棒!感谢。
答案 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秒,然后使计数器在每次触发计时器事件时递增,以跟踪按下的秒数。释放按钮后立即停止计时器并执行您想要的任何操作