JavaFX 自动完成大括号

JavaFX Autocomplete Curly Brackets

我正在用 JavaFX 制作我自己的文本编辑器,我想要括号补全。就像在 Netbuns 中一样。我试过在 TextArea 上使用 ChangeListener 并检查最后一个字符是否是括号并像这样附加字符:

textArea.textProperty().addListener(new ChangeListener<String>()
    {
        @Override
        public void changed(final ObservableValue<? extends String> observable, final String oldValue, final String newValue)
        {
            if (textArea.getText().charAt(textArea.getText().length()-1) == '{')
            {
                textArea.appendText("}");
            }
        }
    });

但是因为它只检查 textArea 中的最后一个字符,所以这不适用于括号内有括号的代码。有谁知道解决这个问题的方法?注意我正在使用 JDK 1.7.0_55 并且我的学校拒绝更新到 JDK 8 可能也会有所帮助。我们将不胜感激。

您应该使用 anchor 属性 来接收插入符号的位置,而不是使用文本长度值。