JavaFX在按下按钮时触发操作

时间:2009-10-20 21:35:55

标签: javafx

我正在尝试使用ImageView创建一个滚动按钮,该按钮会在按下时滚动某些图像。我尝试使用MouseEvent的primaryButtonDown属性来执行此操作,但它冻结了应用程序:

ivbutton.onMousePressed = function (e) {
     while (e.primaryButtonDown){
       //Scroll Stuff
     }

你知道创建这种按钮的方法吗?

感谢。

1 个答案:

答案 0 :(得分:2)

您可以将滚动链接到时间轴动画吗? 然后按钮可以控制时间线的开始和停止。

例如,这是类似的,但它控制一个正方形的旋转(也许你可以使用TranslateTransition):

import javafx.scene.shape.Rectangle;
import javafx.scene.paint.Color;
import javafx.animation.transition.RotateTransition;
import javafx.animation.Timeline;
import javafx.scene.control.Button;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.animation.Interpolator;

def r = Rectangle {
    x: 80 y: 80
    height: 100 width:  100
    arcHeight: 50 arcWidth: 50
    fill: Color.VIOLET
}

def rotTransition = RotateTransition {
    duration: 1s
    node: r
    byAngle: 180
    repeatCount: Timeline.INDEFINITE
    interpolator: Interpolator.LINEAR
}

def b = Button {
    text: "Click and hold"
    onMousePressed: function (e) {
         rotTransition.play();
     };
     onMouseReleased: function (e) {
         rotTransition.stop();
     };
};
Stage {
    title : "Rotation"
    scene: Scene {
        width: 250
        height: 250
        content: [r,b]
    }
}