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

时间:2018-02-16 17:33:56

标签: java swing jframe jtextarea

我试图做的是,当我调用该函数时,该行消失在插入符号位于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;
    }
}

1 个答案:

答案 0 :(得分:2)

尝试使用Utilities类。

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

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