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 属性 来接收插入符号的位置,而不是使用文本长度值。
我正在用 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 属性 来接收插入符号的位置,而不是使用文本长度值。