Swing/CaretPosition のバックアップ差分(No.18)
- バックアップ一覧
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- バックアップ を表示
- Swing/CaretPosition へ行く。
- 1 (2005-08-01 (月) 02:22:59)
- 2 (2005-08-01 (月) 02:29:18)
- 3 (2005-10-13 (木) 16:09:46)
- 4 (2006-02-13 (月) 16:42:25)
- 5 (2006-02-27 (月) 15:30:34)
- 6 (2006-02-27 (月) 16:51:05)
- 7 (2006-04-12 (水) 19:35:27)
- 8 (2007-03-02 (金) 16:16:07)
- 9 (2007-08-04 (土) 15:05:48)
- 10 (2009-11-06 (金) 18:29:44)
- 11 (2013-03-27 (水) 16:42:08)
- 12 (2013-07-31 (水) 23:36:19)
- 13 (2013-09-08 (日) 02:32:50)
- 14 (2014-11-25 (火) 03:03:31)
- 15 (2014-12-28 (日) 15:27:22)
- 16 (2015-03-13 (金) 13:08:39)
- 17 (2017-02-09 (木) 15:27:01)
- 18 (2017-04-07 (金) 13:51:51)
- 19 (2017-12-24 (日) 15:14:29)
- 20 (2019-08-30 (金) 18:04:33)
- 21 (2021-04-22 (木) 21:54:03)
- 追加された行はこの色です。
- 削除された行はこの色です。
--- category: swing folder: CaretPosition title: JTextPaneで最終行に移動 tags: [JTextPane, JTextComponent, Caret, Document] author: aterai pubdate: 2005-08-01T02:22:59+09:00 description: CaretPositionを指定してJTextPaneの最終行に移動します。 image: https://lh4.googleusercontent.com/_9Z4BYR88imo/TQTId9wo-yI/AAAAAAAAAS0/GZbZiJfMOwI/s800/CaretPosition.png --- * 概要 [#summary] `CaretPosition`を指定して`JTextPane`の最終行に移動します。 #download(https://lh4.googleusercontent.com/_9Z4BYR88imo/TQTId9wo-yI/AAAAAAAAAS0/GZbZiJfMOwI/s800/CaretPosition.png) * サンプルコード [#sourcecode] #code(link){{ Document doc = jtp.getDocument(); try { doc.insertString(doc.getLength(), str + "\n", null); doc.insertString(doc.getLength(), text + "\n", null); jtp.setCaretPosition(doc.getLength()); } catch (BadLocationException e) {} } catch (BadLocationException ex) { ex.printStackTrace(); } }} * 解説 [#explanation] 上記のサンプルでは、`Document`に文字列と改行(`JTextComponent`内での改行は常に`\n`であり、`System.getProperties("line.separator")`としたり、`\r\n`を考慮する必要はない)を追加した後、その`Document`の一番最後に`JTextComponent#setCaretPosition(int)`メソッドでキャレットを移動しています。 上記のサンプルでは、`Document`に文字列と改行(`JTextComponent`内での改行は常に`\n`であり、`System.getProperties("line.separator")`としたり、`\r\n`を考慮する必要はない)を追加した後、その`Document`の一番最後に`JTextComponent#setCaretPosition(int)`メソッドで`Caret`を移動しています。 `Document`の最後ではなく、現在のキャレットの位置から、その行番号を取得したい場合は、以下のようにします。 - メモ -- 現在の`Caret`位置の行番号を取得する #code{{ public static int getLineAtCaret(JTextComponent component) { int caretPosition = component.getCaretPosition(); Element root = component.getDocument().getDefaultRootElement(); return root.getElementIndex(caretPosition) + 1; } }} * 参考リンク [#reference] - [[JScrollPaneのオートスクロール>Swing/AutoScroll]] - [https://community.oracle.com/thread/1393939 Swing - Line Number in JTextPane] - [http://stackoverflow.com/questions/1627028/how-to-set-auto-scrolling-of-jtextarea-in-java-gui How to set AUTO-SCROLLING of JTEXTAREA in Java GUI? - Stack Overflow] * コメント [#comment] #comment #comment