Swing/CaretPosition のバックアップ(No.14)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - 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)
- title: JTextPaneで最終行に移動 tags: [JTextPane, JTextComponent, Caret, Document] author: aterai pubdate: 2005-08-01T02:22:59+09:00 description: CaretPositionを指定してJTextPaneの最終行に移動します。
概要
CaretPosition
を指定してJTextPane
の最終行に移動します。
Screenshot
Advertisement
サンプルコード
Document doc = jtp.getDocument();
try{
doc.insertString(doc.getLength(), str+"\n", null);
jtp.setCaretPosition(doc.getLength());
}catch(BadLocationException e) {}
View in GitHub: Java, Kotlin解説
上記のサンプルでは、Document
に文字列と改行(JTextComponent
内での改行は常に\n
であり、System.getProperties("line.separator")
としたり、\r\n
を考慮する必要はない)を追加した後、そのDocument
の一番最後にJTextComponent#setCaretPosition(int)
メソッドでキャレットを移動しています。
Document
の最後ではなく、現在のキャレットの位置から、その行番号を取得したい場合は、以下のようにします。
public static int getLineAtCaret(JTextComponent component) {
int caretPosition = component.getCaretPosition();
Element root = component.getDocument().getDefaultRootElement();
return root.getElementIndex(caretPosition)+1;
}
参考リンク
- JScrollPaneのオートスクロール
- Swing - Line Number in JTextPane
- How to set AUTO-SCROLLING of JTEXTAREA in Java GUI? - Stack Overflow