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
Post a Comment