Swing/CaretPosition の変更点
- 追加された行はこの色です。
- 削除された行はこの色です。
- Swing/CaretPosition へ行く。
- Swing/CaretPosition の差分を削除
--- 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(), text + "\n", null); jtp.setCaretPosition(doc.getLength()); } catch (BadLocationException ex) { ex.printStackTrace(); } }} * 解説 [#explanation] 上記のサンプルでは、`Document`に文字列と改行を追加した後、その`Document`の一番最後に`JTextComponent#setCaretPosition(int)`メソッドで`Caret`を移動しています。 - `JTextComponent`内での改行は常に`\n`であり、`System.getProperties("line.separator")`で取得したり、`\r\n`を考慮する必要はない - `JTextComponent`内での改行は常に`\n`のため`System.getProperties("line.separator")`で取得したり`\r\n`を考慮する必要はない - 現在の`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] - [https://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