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

标签 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;
    }
}

最佳答案

尝试使用Utilities类。

不需要任何循环逻辑。代码应该类似于:

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

关于java - 如何删除插入符号所在的 TextArea 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48832069/

相关文章:

java - 使用从 Json 响应传递的对象填充 JTable

Java - Mac 上的屏幕尺寸

Java 泛型 : Understanding Bounded Wildcards

java - 我如何以最佳方式使用 StringBuilder 的 toString 方法

java - 借助位位置打印 PowerSet

java - GUI 框架/按钮

java - 如何拖放自定义 Swing 组件

java - lucene只能排序搜索什么都不行吗?

java - 如何创建检查以防止用户添加现有值

java - JFrame.setDefaultCloseOperation() 默认值是 HIDE_ON_CLOSE 是真的吗?