如何删除插入符号所在的 TextArea 行

How do I remove the line of TextArea where caret is located

我尝试做的是,如果当我调用该函数时,该行在插入符位于 JTextArea 中的位置消失。我在一线案例中取得了成就,但在中线和末线案例中很难做到。

这是我所做的完全失败的代码。

private void DeleteOptionActionPerformed(ActionEvent e) {
    String[] lines = area.getText().split("\n");
    int caret = area.getCaretPosition();
    int beforeLocation = 0;

    for(int i = 0; i < area.getLineCount(); i++) {
        try {
            if(i == 0) {
                if(caret <= lines[i].length()) 
                    area.replaceRange(null, area.getLineStartOffset(i), area.getLineEndOffset(i));
            }
            else {
                if(caret <= lines[i].length() && caret > lines[beforeLocation].length()) {
                    area.replaceRange(null, area.getLineStartOffset(i), area.getLineEndOffset(i));
                }
                else {
                    caret -= lines[i].length();
                    beforeLocation = i;
                    continue;
                }
            }
        } catch(BadLocationException e1) {
            e1.printStackTrace();
        }
        caret -= lines[i].length();
        beforeLocation = i;
    }
}

尝试使用 Utilities class.

不需要任何循环逻辑。代码应该是这样的:

int offset = textArea.getCaretPosition();
int start = Utilities.getRowStart(...);
int end = Utilities.getRowEnd(...);
textArea.replaceRange("", start, end);