【问题标题】:How to get the number of lines from a jtextpane如何从 jtextpane 获取行数
【发布时间】:2012-12-10 19:13:38
【问题描述】:

有没有办法从一个充满文本的 jtextpane 中“提取”行数? 如果有,如果某些行是由于文本换行,它会起作用吗?

【问题讨论】:

    标签: java swing jtextpane word-wrap


    【解决方案1】:

    您可以使用Utilities.getRowStart 来确定@​​987654323@ 的行的“开始”,从而得到lineCount。这也适用于换行时。

    int totalCharacters = textPane.getText().length(); 
    int lineCount = (totalCharacters == 0) ? 1 : 0;
    
    try {
       int offset = totalCharacters; 
       while (offset > 0) {
          offset = Utilities.getRowStart(textPane, offset) - 1;
          lineCount++;
       }
    } catch (BadLocationException e) {
        e.printStackTrace();
    }
    

    【讨论】:

    • 请注意:“换行时也可以使用。”意味着如果一行自动换行,结果数字将增加换行的数量。所以,当你例如。要显示行号,您必须检查一行是否真的是一行,或者由于自动换行而显示为一行。
    【解决方案2】:

    如果您将“行”定义为 JTextPane 文本中有多少个 \n 字符,那么您可以使用:

    JTextPane p = yourJTextPane;
    System.out.println(p.getText().split("\n").length);
    

    【讨论】:

    • 谢谢,虽然我已经试过了。问题是当jtextPane换行时,好像没有放“\n”?我真的不明白为什么。
    • 不,它没有。如果这是你需要的,你不能使用我的答案。
    【解决方案3】:

    要跳转到选中的行,我使用了以下代码:

    int rowSel = Integer.parseInt(tfGoLine.getText());
    
            int rowGo = 0;
            int lineCount = 0;
            int totalCharacters = rowSel <= 1 ? 0 : text.getText().length();
    
            try {
                int last = -1;
                for (int count = 0; count < totalCharacters; count++) {
                    int offset = Utilities.getRowStart(text, count);
    
                    if (last != offset) {
                        last = offset;
                        lineCount++;
                        rowGo = offset;
    
                        if (lineCount == rowSel) {
                            break;
                        }
                    }
                }
    
            } catch (BadLocationException e) {
            }
    
            text.getCaret().setDot(rowGo);
            text.requestFocus();
    

    【讨论】:

      【解决方案4】:
      int rowCount =txtPane.getDocument().getDefaultRootElement().getElementCount();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-07-19
        • 2012-03-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多