9

テキストで満たされたjtextpaneから行数を「抽出」する方法はありますか? ある場合、一部の行がテキストの折り返しによるものであっても機能しますか?

4

4 に答える 4

14

を使用Utilities.getRowStartして、行の「開始」を決定しJTextPane、結果の を得ることができます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();
}
于 2012-12-10T19:38:24.910 に答える
5

JTextPane テキストに含まれる文字数として「行」を定義する場合\n、以下を使用できます。

JTextPane p = yourJTextPane;
System.out.println(p.getText().split("\n").length);
于 2012-12-10T19:18:09.553 に答える
0

選択した行にジャンプするには、次のコードを使用しました。

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();
于 2015-05-27T17:47:48.150 に答える