我正在使用JavaFX 2.2,但每次输入阿拉伯语文本时,chracters的顺序都是相反的,因为这个问题的解决方案只有在发布JavaFX 8时才会出现。如何监视文本框并自动将键入的字符反转为应该使用的字符:
arabicTextBox.setOnKeyPressed(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent t) {
//TODO: correct arabic text order here
}
});
将赞赏示例实施。
答案 0 :(得分:1)
使用事件过滤器而不是简单的KeyPressed,因为它允许您使用事件并覆盖默认的TextField
行为。
对于最简单的情况(没有键盘导航),您只能处理KeyEvent.KEY_TYPED
:
final TextField tf = new TextField();
tf.addEventFilter(KeyEvent.ANY, new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent t) {
if (KeyEvent.KEY_TYPED == t.getEventType()) {
// put character to the first position
tf.setText(t.getCharacter() + tf.getText());
}
t.consume(); // doesn't allow TextField to handle keyboard events by itself
}
});
如果你想要完全成熟的阿拉伯语TextField
,你可以为箭头键,插入位置等添加逻辑。