如何设置JavaFX的制表符宽度TextArea http://docs.oracle.com/javafx/2/api/javafx/scene/control/TextArea.html ?
当我在 TextArea 中使用制表(tab 键)时,制表的宽度很宽。我想控制宽度,即使用4个空格。在文档中我找不到执行此操作的方法。
我尝试了这段代码(其中 taInput 是一个 TextArea),但它没有按预期工作:
taInput.setOnKeyPressed(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent e) {
if (e.getCode() == KeyCode.TAB) {
// TAB SPACES
StringBuilder sb = new StringBuilder(config.getTabSpacesCount());
for (int i=0; i<config.getTabSpacesCount(); i++) {
sb.append(' ');
}
taInput.insertText(taInput.getCaretPosition(), sb.toString());
e.consume();
}
}
});
最后我找到了一种方法来做到这一点。
看来 setOnKeyPressed() 方法不适合此任务,因为该事件是在执行 keyPress 操作后处理的。
addEventFilter() 在执行事件之前处理事件,因此您可以操纵事件。
我的新代码:
taInput.addEventFilter(KeyEvent.KEY_PRESSED, new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent e) {
if (e.getCode() == KeyCode.TAB) {
String s = StringUtils.repeat(' ', config.getTabSpacesCount());
taInput.insertText(taInput.getCaretPosition(), s);
e.consume();
}
}
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)