scroll - How can I set another value in property listener? -


i want speed-up scrollpane scrolling. need like:

scrollpane.vvalueproperty().addlistener((observable, oldvalue, newvalue) -> {             scrollpane.setvvalue(oldvalue.doublevalue() + (newvalue.doublevalue() - oldvalue.doublevalue()) * 2);         }); 

but without stackowerflow exections , working..

may there way consume event?

p.s. btw, why setonscroll() fire when scrolling reaches max (top) or min (bot) position?

i don't recommend modifying property while changing, if want need set flag suppress recursive calls. here's example:

import java.util.random;  import javafx.application.application; import javafx.beans.property.property; import javafx.beans.value.changelistener; import javafx.beans.value.observablevalue; import javafx.scene.node; import javafx.scene.scene; import javafx.scene.control.scrollpane; import javafx.scene.layout.region; import javafx.scene.layout.tilepane; import javafx.stage.stage;  public class modifyscrollspeed extends application {      @override     public void start(stage primarystage) {         scrollpane scrollpane = new scrollpane(createcontent());         doublinglistener.register(scrollpane.vvalueproperty());          scene scene = new scene(scrollpane, 400, 400);         primarystage.setscene(scene);         primarystage.show();     }       private static class doublinglistener implements changelistener<number> {          private boolean doubling ;          private property<number> target ;          private doublinglistener(property<number> target) {             this.target = target ;         }          public static void register(property<number> target) {             target.addlistener(new doublinglistener(target));         }          @override         public void changed(observablevalue<? extends number> observable, number oldvalue, number newvalue) {             if (! doubling) {                 doubling = true ;                 target.setvalue(oldvalue.doublevalue() + 2 * (newvalue.doublevalue() - oldvalue.doublevalue()));             }             doubling = false ;         }      }      private node createcontent() {         tilepane tilepane = new tilepane();         random rng = new random();         (int = 0; < 200; i++) {             region region = new region();             region.setminsize(40,  40);             region.setprefsize(40, 40);             region.setmaxsize(40, 40);             region.setstyle(string.format("-fx-background-color: #%02x%02x%02x;",                      rng.nextint(256), rng.nextint(256), rng.nextint(256)));             tilepane.getchildren().add(region);         }         return tilepane ;     }      public static void main(string[] args) {         launch(args);     } } 

i don't see other way change increment amounts scroll pane. note scrollbar has api changing increment amounts via unitincrement , blockincrement properties, scrollpane not have equivalent properties.

there comment in source code scrollpane says

/*  * todo unit increment , block increment variables have been  * removed public api. these intended mapped  * corresponding variables of scrollbars. however, problem  * specified in terms of logical corrdinate space  * of scrollpane (that is, [hmin..hmax] [vmin..vmax].  * incorrect. scrolling user action , should based  * on how of content visible, not on abstract  * coordinate space. @ later date may add finer-grained  * api allow applications control this. meanwhile, skin should  * set unit , block increments scroll bars  * reasonable based on viewport size, e.g. block increment  * should scroll 90% of pixel size of viewport, , unit  * increment should scroll 10% of pixel size of viewport.  */ 

the current skin scroll pane hard codes unit , block increments scroll bars (in updatehorizontalsb , updateverticalsb methods) in manner described in comment (i.e. 10% , 90% of visible amount), see no real way @ these. in java 9 skin class become public class, , @ minimum subclass , modify behavior.


Comments

Popular posts from this blog

get url and add instance to a model with prefilled foreign key :django admin -

css - Make div keyboard-scrollable in jQuery Mobile? -

ruby on rails - Seeing duplicate requests handled with Unicorn -