JavaFx无法连续缩小

时间:2014-07-24 18:42:02

标签: javafx

我遇到了JavaFX的一些奇怪问题。 用例是:我想缩小一个样本。 我实现了一个Scroll事件处理程序,如下所示:

private void handleSwatchScrollAction(ScrollEvent se){
        if(se.getEventType().equals(ScrollEvent.SCROLL)){
            System.out.println("Enter into handleSwatchScrollAction ");

            //The following two lines just want to calculate a ration to scale
            double diff = (se.getDeltaY() / 40) * 2;
            double diffFactor = diff / 2 / this.fxDial.getRadius() + 1;
            System.out.println("diffFactor is: " + diffFactor);

            //The following lines is to set scale
            this.fxSwatch.setScaleX(diffFactor);
            this.fxSwatch.setScaleY(diffFactor);
        }
        System.out.println("finish handleDialScrollAction");
    }

问题是,当我使用滚动缩小时,第一次缩小操作效果很好。 但是从第二次看,没有变化。 日志看起来正确,但只是没有变化显示,一切都和以前一样。

例如,当我不断进行缩小操作(向上滚动)时,无论是第一次还是之后,日志总是这样:

  

输入handleSwatchScrollAction

     

(deltaX,deltaY)=(0.0,40.0)

     

diffFactor是:1.005

     

完成handleSwatchScrollAction

那么,为什么从视图上看第二次缩小(向上滚动)操作没有变化? 非常感谢你!

1 个答案:

答案 0 :(得分:0)

每次滚动时,您只需将比例值设置为相同的值(1.005)。第一次,你会看到0.5%左右的变焦;但是在后续滚动事件中,您没有更改值。

您需要以下内容:

double diffFactor = ... // as before
double scale = this.fxSwatch.getScaleX() * diffFactor ;

this.fxSwatch.setScaleX(scale);
this.fxSwatch.setScaleY(scale);