2

我使用的是 JavaFX 2.2,但每次我输入阿拉伯文本时,字符的顺序都会颠倒,因为只有在 JavaFX 8 发布时才能解决这个问题。如何监视文本框并自动将键入的字符反转回它应有的方式,例如:

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

    @Override
    public void handle(KeyEvent t) {

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

示例实现将不胜感激。

4

1 回答 1

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

于 2013-08-05T09:47:25.377 回答