私のJScrollPaneは、次のコードを使用してJTextAreaにテキストが追加されるたびに下にスクロールできます。
DefaultCaret caret = (DefaultCaret) textArea.getCaret();
caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
ただし、テキストが長すぎて、ボックスの表示可能な部分に収まらない場合は、右(テキスト領域のリテラル端)にスクロールします。
おそらくテキストの水平方向の変更を無視して、垂直方向に自動的にスクロールする(表示されている現在の水平列を維持する)方法はありますか。これ、または常に左側に配置します。
回答 2 件
ビューポートの位置を手動で調整する必要があります。したがって、次のようなコードでappend(...)メソッドを作成できます。
public void append(JTextArea textArea, String text) { textArea.append( text ); Component parent = textArea.getParent(); if (parent instanceof JViewport) { JViewport viewport = (JViewport)parent; Point p = viewport.getViewPosition(); if (p.x != 0) { p.x = 0; viewport.setViewPosition( p ); } } }
または、ビューの位置を変更する代わりに、キャレットを行の先頭にリセットすると、ビューポートが自動的に左にリセットされます。
textArea.append( text ); textArea.setCaretPosition( Utilities.getRowStart(textArea, textArea.getCaretPosition() );
関連記事
- Javascriptスクロールを常に下に
- Reactjs無限スクロールコンポーネントは常に新しいデータをレンダリングします
- Java JScrollpaneを水平ではなく垂直にスクロールさせる
- AndroidはeditTextをクリックしたときにscrollViewを自動的に下にスクロールさせる方法は?
- ボードのようなTrelloの下部にoverflow-xスクロールを表示したい
- スクロール時にヘッダーを非表示にしますが、一番下までスクロールしてヘッダーを表示すると
- divスクロールが下から開始されなかった理由
- Angular 4:ngx-infinite-scrollでスクロールが下に移動したときに、より多くのデータをロードし、機能しません
- jqueryの自動更新で下に自動スクロールする方法
関連した質問
- 私のキーバインディングはそのアクションを実行しませんでしたJPanelで実行されました
- 複数のJScrollPanesをJLayeredPaneに挿入する方法はありますか?
- スレッド「AWT-EventQueue-0」の例外javalangNumberFormatException:入力文字列の場合:「月を選択」
- JAVA:JTextAreaは、親グラフィックを翻訳した後、偽の視覚的な場所を持っています
- Java:コンポーネントを水平方向に中央揃えし、垂直方向に積み重ねる方法は?
- KeyBindingでAbstractActionに引数を渡すにはどうすればよいですか?
- mouseListenerでJButtonの色を変更する
- テーブルに垂直ヘッダーを追加するにはどうすればよいですか?
- ユーザーインターフェイスのJTable
- 注:Anprjavaは、チェックされていない操作または安全でない操作を使用します。注:JComboBoxの詳細警告については、-Xlint:uncheckedを使用して再コンパイルしてください
append(String)
のようなものがある場合 メソッドを使用すると、JTextArea
に簡単に追加できます 、その領域を次のようなもので更新することもできます。キャレットを最後の
\n
に置く テキスト内。