java - Remove tabulation on TextArea and go to next field -


in javafx8 want know how it's possible don't add tabulation in textarea when press tab , go the next field textfield do.

in javafx2 resolve problem following code

public class tabtextareaskin extends textareaskin implements skin<textarea> {  public tabtextareaskin(final textarea textarea) {     super(textarea);     textarea.focusedproperty().addlistener(new changelistener<boolean>() {         @override         public void changed(observablevalue<? extends boolean> observablevalue, boolean aboolean, boolean aboolean2) {             if (!aboolean2) {                 textarea.deselect();             }         }     });     textarea.addeventfilter(keyevent.key_pressed, new eventhandler<keyevent>() {         @override         public void handle(keyevent event) {             if (event.getcode() == keycode.tab) {                 skinbase skin = (skinbase) textarea.getskin();                 if (skin.getbehavior() instanceof textareabehavior) {                     textareabehavior behavior = (textareabehavior) skin.getbehavior();                     if (event.isshiftdown()) {                         behavior.callaction("inserttab");                     } else {                         behavior.callaction("traversenext");                     }                     event.consume();                 }             }         }     }); } 

}

but in javafx8 there no getbehavior() method on skinbase. don't know do. solution ?

try use com.sun.javafx.scene.traversal.traversalengine. aware of internal use only.

final textarea area = new textarea(); final traversalengine engine = new traversalengine(root, false); final keycombination kc = new keycodecombination(keycode.tab);  area.addeventfilter(keyevent.key_pressed, new eventhandler<keyevent>() {      @override     public void handle(keyevent event) {         if (kc.match(event)) {             engine.trav(area, direction.next);             event.consume();         }     } }); 

the other cumbersome safe way can be:

area.addeventfilter(keyevent.key_pressed, new eventhandler<keyevent>() {      @override     public void handle(keyevent event) {         if (kc.match(event)) {             int ind = vbox.getchildren().indexof(area);             node next = vbox.getchildren().get(ind + 1);             next.requestfocus();             event.consume();         }     } }); 

Comments

Popular posts from this blog

windows - Single EXE to Install Python Standalone Executable for Easy Distribution -

c# - Access objects in UserControl from MainWindow in WPF -

javascript - How to name a jQuery function to make a browser's back button work? -