java - 如何找出所选文本的行号?

标签 java button listener

假设这个非常小的程序:

 1.  package ex1;    
 2.  public interface Resizable {
 3.  void resize();
 4.  }

在我的编辑器中,如果我使用鼠标选择第 2-3 行并点击一个按钮,我想突出显示这些文本并打印,哪些行号是为按钮选择的。

我可以做高亮部分,但我不知道如何找到高亮文本的行号,我想,我应该使用一个监听器,它将检测编辑器中的任何变化。

我想我应该使用一个 Action 监听器,它会在选择文本 block 后检测按钮何时被按下。但是我怎么知道哪些行被准确选中了呢?

最佳答案

高亮的开始和结束可以分别取自插入符号位置dotmark。这些是 Document 中的偏移量。然后您必须计算从文档开始到标记/执行的换行数

    textArea.addCaretListener(new CaretListener() {
        @Override
        public void caretUpdate(CaretEvent e) {
            int startLine = getLine(e.getDot());
            int endLine = getLine(e.getMark());
            ...
        }
    });

private int getLine(int offset) {
    String text = textArea.getDocument().getText(0, offset);
    int linenr = 0;
    int idx = text.indexOf("\n");
    while (idx != -1) {
        linenr++;
        idx = text.indexOf("\n", idx);
    }
    return linenr;
}

关于java - 如何找出所选文本的行号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25379782/

相关文章:

iphone - 如何在 Interface Builder 中创建 NSToggleButton?

java - 按下按钮使微调器在另一个屏幕上可见

Java GIF 动画无法正确重画

java - Spring Boot Rest Api 不显示验证消息

java - Tapestry 5.3.8 提交包含区域的表单

Android FAB拖放

Java SQLite org.sqlite.JDBC 类路径损坏?

Android:点击按钮时设置 alpha。最好只有 xml

oracle - sqlplus名称/passwprd@orcl错误:12514

android - 不进入 Onkeylistener?无法弄清楚