解决JavaFX 2.2阿拉伯语文本方向问题

时间:2013-08-04 22:19:09

标签: java javafx-2

我正在使用JavaFX 2.2,但每次输入阿拉伯语文本时,chracters的顺序都是相反的,因为这个问题的解决方案只有在发布JavaFX 8时才会出现。如何监视文本框并自动将键入的字符反转为应该使用的字符:

arabicTextBox.setOnKeyPressed(new EventHandler<KeyEvent>() {

    @Override
    public void handle(KeyEvent t) {

        //TODO: correct arabic text order here
    }
});

将赞赏示例实施。

1 个答案:

答案 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,你可以为箭头键,插入位置等添加逻辑。