首页 > 解决方案 > 在 RichTextFX CodeArea 中保持缩进

问题描述

我正在 RichTextFX CodeArea 中构建一个 YAML 编辑器(我相信它是一种 TextArea)。当我按 Enter 时,我想保持当前的缩进级别。例如:

- item1: foo
  item1A:
    subElement: A
<there should be 4 spaces here after I hit enter>

或者,如果有人已经在 RichTextFX 或 JavaFX 中构建了一个 yaml 编辑器,我希望有一个指向它的链接。

当我在此之后按回车时,添加一个子元素unde

标签: javafxrichtextfx

解决方案


您可以尝试以下方法:

Pattern whiteSpace = Pattern.compile( "^\\s+" );

codeArea.addEventFilter( KeyEvent.KEY_PRESSED, KE ->
{
    if ( KE.getCode() == KeyCode.ENTER )
    {
        Matcher m = whiteSpace.matcher( codeArea.getParagraph( codeArea.getCurrentParagraph() ).getSegments().get( 0 ) );
        if ( m.find() ) Platform.runLater( () -> codeArea.insertText( codeArea.getCaretPosition(), m.group() ) );
    }
});

推荐阅读