このページでは、JScrollPaneJViewportJScrollBarといったスクロール関係のコンポーネントの使い方を集めて一覧にしています。

JScrollPane JViewport JScrollBar

JScrollPaneのViewportをマウスで掴んでスクロール

thumbnail
JScrollPaneのViewportをマウスで掴んでスクロール

JScrollPaneの窓の中をマウスで掴んで画像をスクロールします。

JTreeの余白をドラッグしてスクロール

thumbnail
JTreeの余白をドラッグしてスクロール

JTreeの余白などをマウスでドラッグしてスクロールします。

JScrollPaneでキネティックスクロール

thumbnail
JScrollPaneでキネティックスクロール

JScrollPaneにキネティックスクロール(慣性スクロール)風の動作をするマウスリスナーを設定します。

JScrollPaneのオートスクロール

thumbnail
JScrollPaneのオートスクロール

JScrollPane上でのマウスドラッグに応じてラベルをオートスクロールします。

JScrollPane内にある複数Componentを配置したJPanelをJLayerを使ってドラッグスクロール

thumbnail
JScrollPane内にある複数Componentを配置したJPanelをJLayerを使ってドラッグスクロール

複数のネストしたComponentを配置したJPanelのドラッグイベントを、JScrollPaneをラップしたJLayerで受け取ってスクロール可能にします。

JScrollBarをJScrollPaneの左と上に配置

thumbnail
JScrollBarをJScrollPaneの左と上に配置

JScrollBarの配置位置を、JScrollPaneの左側、上側に変更します。

ScrollBarの表示を変更

thumbnail
ScrollBarの表示を変更

JScrollPaneから縦JScrollBarを取得し、そのノブ上にアイコンを追加表示します。

JScrollPaneのスクロールを禁止

thumbnail
JScrollPaneのスクロールを禁止

JScrollPaneのスクロールを一時的に禁止します。

JScrollPaneのスクロールを同期

thumbnail
JScrollPaneのスクロールを同期

2つのJScrollPaneのスクロールを同期します。

JScrollPaneのスクロール量を変更

thumbnail
JScrollPaneのスクロール量を変更

スクロールがホイールの回転でスムーズに移動しない(遅い)場合は、JScrollPaneのスクロール量を変更します。

↑10 ↓11

JScrollBarをJSliderとして代用する

thumbnail
JScrollBarをJSliderとして使用する

JScrollBarJSliderの代わりとして使用します。

JScrollBarのButtonの位置を変更

thumbnail
JScrollBarのButtonの位置を変更

JScrollBarのスクロール移動Buttonの配置位置をレイアウトマネージャーを使って変更します。

TableCellEditorをスクロール可能にする

thumbnail
TableCellEditorをスクロール可能にする

JTableTableCellEditorとして、JTextAreaJScrollPaneを使用します。

JScrollBarが非表示でもMouseWheelでScrollする

thumbnail
JScrollBarが非表示でもMouseWheelでScrollする

JScrollBarが非表示の場合のMouseWheelによるScrollをテストします。

JScrollBarのKnobの最小サイズを設定する

thumbnail
JScrollBarのKnobの最小サイズを設定する

JScrollBarKnobの最小サイズを設定します。

GridLayoutとJScrollPaneを使ったグリッド単位での表示切り替え

thumbnail
GridLayoutとJScrollPaneを使ったグリッド単位での表示切り替え

JPanelGridLayoutでコンポーネントを追加し、これをJScrollPaneに配置して、グリッド単位での表示、スクロールアニメーションによる切り替えを行います。

JScrollPane内にあるJTableなどで追加した行が可視化されるようにスクロールする

thumbnail
JScrollPane内にあるJTableなどで追加した行が可視化されるようにスクロールする

JScrollPaneJViewport内にあるJTableJListJTreeで、それぞれ追加された最終行が可視化されるようにスクロールします。

JSplitPaneに2つのJTableを配置してスクロールを同期する

thumbnail
JSplitPaneに2つのJTableを配置してスクロールを同期する

JSplitPaneの左右に、JTableをそれぞれ配置し、スクロールや追加などが同期するようにモデルを共有します。

JScrollBarに検索結果をハイライト表示

thumbnail
JScrollBarに検索結果をハイライト表示

JScrollBarなどにJTextAreaの文字列検索の結果をハイライト表示します。

JScrollBarが最後までスクロールしたことを確認する

thumbnail
JScrollBarが最後までスクロールしたことを確認する

JScrollBarが最後までスクロールしたかどうかを確認します。

↑20 ↓21

JTextPaneを一行に制限してスタイル可能なJTextFieldとして使用する

thumbnail
JTextPaneを一行に制限してスタイル可能なJTextFieldとして使用する

JTextPaneの行数を一行のみに制限して、文字色などのスタイル付けが可能なJTextFieldとして使用します。

JTableのセルを横方向に連結する

thumbnail
JTableのセルを横方向に連結する

JTableのセルを横方向に連結するセルレンダラーを作成します。

JScrollBarを半透明にする

thumbnail
JScrollBarを半透明にする

半透明のJScrollBarを作成して、JViewport内部に配置します。

JViewportにBorderを設定する

thumbnail
JViewportにBorderを設定する

JViewportBorderを設定して余白を作成します。

JLabelとIconで作成した検索位置表示バーをマウスで操作する

thumbnail
JLabelとIconで作成した検索位置表示バーをマウスで操作する

JScrollBarからBoundedRangeModelを取得し、JLabelIconで表示した検索位置表示バーをマウスで操作可能にします。

JTextFieldの表示領域をJScrollBarでスクロールする

thumbnail
JTextFieldの表示領域をJScrollBarでスクロールする

JTextFieldの表示領域をJScrollBarでスクロール可能にします。

MouseWheelEventを親のJScrollPaneに転送する

thumbnail
MouseWheelEventを親のJScrollPaneに転送する

JLayerを使って、ネストするJScrollPaneへのMouseWheelEventを転送し、スクロールが継続するように設定します。

JScrollPaneでMouseWheelによる水平スクロールを行う

thumbnail
JScrollPaneでMouseWheelによる水平スクロールを行う

JScrollPaneで水平スクロールを行えるように、その内部のViewHorizontalScrollBarMouseWheelListenerを設定します。

JScrollPane内に配置したJPanelをマウスで拡大、縮小、移動する

thumbnail
JScrollPane内に配置したJPanelをマウスで拡大、縮小、移動する

JScrollPane内に配置したJPanelを、マウスホイールを使った拡大縮小と、スクロールバーを使った表示領域の移動が可能になるように設定します。

JScrollBarをJTable上に重ねて表示するJScrollPaneを作成する

thumbnail
JScrollBarをJTable上に重ねて表示するJScrollPaneを作成する

半透明のJScrollBarJTable上に重ねてレイアウトするJScrollPaneを作成します。

↑30 ↓31

FocusTraversalPolicyを使用してフォーカスを取得したコンポーネントまでスクロールする

thumbnail
FocusTraversalPolicyを使用してフォーカスを取得したコンポーネントまでスクロールする

FocusTraversalPolicyを使用してフォーカスをもつコンポーネントを取得し、その全体が表示されるまでスクロールします。

JScrollPane上にマウスカーソルが存在する場合のみJScrollBarを表示する

thumbnail
JScrollPane上にマウスカーソルが存在する場合のみJScrollBarを表示する

JScrollPane上にマウスカーソルが存在する場合だけ、縦JScrollBarが表示されるように設定します。

JTableをスクロールバー無しのドラッグでスクロールする

thumbnail
JTableをスクロールバー無しのドラッグでスクロールする

JTableをスクロールバーではなく、内部の行をマウスでドラッグすることでスクロール可能になるよう設定します。

JListがJScrollPane内に組み込まれている場合のビューポートサイズを設定する

thumbnail
JListがJScrollPane内に組み込まれている場合のビューポートサイズを設定する

JScrollPane内に組み込まれたJListを表示するために必要なビューポートの推奨サイズを設定します。

JScrollPaneの行ヘッダを右側に変更する

thumbnail
JScrollPaneの行ヘッダを右側に変更する

JScrollPaneのレイアウトマネージャを使用して、行ヘッダをデフォルトの左側から右側に変更します。

JTabbedPaneのスクロールレイアウトポリシーですべてのタブが非表示にならないよう設定する

thumbnail
JTabbedPaneのスクロールレイアウトポリシーですべてのタブが非表示にならないよう設定する

JTabbedPaneをスクロールタブレイアウトポリシーにしたとき、すべてのタブが非表示になる状態を回避するための方法をテストしています。

JListの選択色を半透明に設定する

thumbnail
JListの選択色を半透明に設定する

JListの選択色を半透明に設定、また背景色を透明にして親パネルの背景を透かして表示します。

JTableの幅が一定以下で水平スクロールバー、以上で列幅を自動拡張するよう設定

thumbnail
JTableの幅が一定以下で水平スクロールバー、以上で列幅を自動拡張するよう設定

JTableの幅が一定以下の場合は列幅を維持して水平スクロールバーを表示し、それ以上になる場合は列幅の自動調整を実行してJTableの幅まで拡張するよう設定します。

JScrollPane内のコンテンツがJViewportの幅より大きい場合その右端に影を描画する

thumbnail
JScrollPane内のコンテンツがJViewportの幅より大きい場合その右端に影を描画する

JScrollPaneに追加したコンポーネントのコンテンツ幅がJViewportの幅より大きく、水平スクロールバーが表示される状態の場合その右端に影を表示します。

JScrollBarのトラック内でクリックした位置につまみを移動する

thumbnail
JScrollBarのトラック内でクリックした位置につまみを移動する

JScrollBarのトラック内でマウスをクリックしたときその位置につまみを移動するよう設定します。

↑40 ↓41

JScrollBarのArrowButtonを非表示にする

thumbnail
JScrollBarのArrowButtonを非表示にする

JScrollBarArrowButtonを非表示に設定します。

JTableのドラッグスクロールをタッチスクリーンで実行する

thumbnail
JTableのドラッグスクロールをタッチスクリーンで実行する

JTableのドラッグスクロールをタッチスクリーンで実行可能にするためのリスナーを作成します。

JEditorPaneのミニマップを表示する

thumbnail
JEditorPaneのミニマップを表示する

JEditorPaneのミニマップをImageIconで作成し、これをLayoutManagerを使用してJScrollPane上に重ねて表示します。

JTextAreaの最終行を超えてスクロール可能にする

thumbnail
JTextAreaの最終行を超えてスクロール可能にする

JTextAreaの高さを拡張し、その最終行を超えてスクロール可能になるよう設定します。

JScrollBar上にマウスカーソルが入ったらその幅を拡張する

thumbnail
JScrollBar上にマウスカーソルが入ったらその幅を拡張する

JScrollBar上へのマウスカーソルの出入りをJLayerで取得してその幅を拡大・縮小します。

JPanelの子コンポーネントを水平方向で折り返す

thumbnail
JPanelの子コンポーネントを水平方向で折り返す

JPanelに配置した子コンポーネントを水平方向で折り返し、またそれらの水平間隔を動的に均等になるよう拡大します。

JEditorPane内のリンク参照位置までスクロールする

thumbnail
JEditorPane内のリンク参照位置までスクロールする

JEditorPaneHTMLDocument内に配置されたリンクのアンカータグが表示される位置までスクロールします。

JEditorPaneのスクロールに連動してJTreeのノードを選択する

thumbnail
JEditorPaneのスクロールに連動してJTreeのノードを選択する

JEditorPaneのスクロールに連動して表示状態になったリンクと同名のJTreeノードを検索・選択します。

JListのスクロールをセルユニット単位にするかを変更する

thumbnail
JListのスクロールをセルユニット単位にするかを変更する

JListのスクロールバーをマウスでドラッグした場合、セルの上辺を固定したユニット単位のスクロールかなめらなかにスクロールするかを設定します。

JScrollPaneの角を丸める

thumbnail
JScrollPaneの角を丸める

JScrollPaneに角丸表示をおこなうためのBorderを設定します。

↑50 ↓51

JScrollBarのKnobの最小サイズをJScrollPaneのサイズ相対に変更する

thumbnail
JScrollBarのKnobの最小サイズをJScrollPaneのサイズ相対に変更する

JScrollBarKnobの最小サイズを固定値ではなく、JScrollPaneのサイズ相対になるよう設定します。

JComboBoxのドロップダウンリストで使用するJScrollBarを変更する

thumbnail
JComboBoxのドロップダウンリストで使用するJScrollBarを変更する

JComboBoxのドロップダウンリストで使用する縦JScrollBarの幅やスタイル、増減ボタンの有無などを変更します。

JTableの水平JScrollBarをリサイズ可能にするためJSplitPaneに再配置する

thumbnail
JTableの水平JScrollBarをリサイズ可能にするためJSplitPaneに再配置する

JTableを配置したJScrollPaneから水平JScrollBarを取り出し、JSplitPaneに再配置してリサイズ可能にします。

JScrollBarの下にスクロールロックボタンを配置する

thumbnail
JScrollBarの下にスクロールロックボタンを配置する

JScrollPaneから取得した垂直JScrollBarとそれらのスクロールをロックするためのJToggleButtonを別パネルに配置します。

JScrollPaneに先頭領域までのスクロールバックを実行するJButtonを追加する

thumbnail
JScrollPaneに先頭領域までのスクロールバックを実行するJButtonを追加する

JScrollPaneJButtonを描画するJLayerを設定し、ここでクリックイベントを取得したら先頭領域までのスクロールバックを実行します。

CardLayoutで作成したJTabbedPane風コンポーネントのタブエリアに水平JScrollBarを表示する

thumbnail
CardLayoutで作成したJTabbedPane風コンポーネントのタブエリアに水平JScrollBarを表示する

CardLayoutを使用してJTabbedPane風のコンポーネントを作成し、そのタブエリアに水平JScrollBarを表示してスクロール可能にします。

JTreeの選択されたノードが表示される位置まで水平スクロールする

thumbnail
JTreeの選択されたノードが表示される位置まで水平スクロールする

JTreeのノードがキー入力で選択されたとき、そのノードまで垂直方向だけでなく水平方向にもスクロールするよう設定します。

JScrollPaneの範囲外へのマウスドラッグによるスクロールで半透明の楕円を描画する

thumbnail
JScrollPaneの範囲外へのマウスドラッグによるスクロールで半透明の楕円を描画する

JScrollPaneの範囲外にマウスドラッグでスクロールしようとするイベントを取得したら、JLayerを使用してJViewportの端に半透明の楕円を描画しこれ以上移動できないことを表現します。

JScrollBarのノブ位置が境界上かどうかでその矢印ボタンの有効・無効を切り替える

thumbnail
JScrollBarのノブ位置が境界上かどうかでその矢印ボタンの有効・無効を切り替える

JScrollBarのノブ位置が境界値まで到達したとき、対応する増加、減少矢印ボタンを無効化します。

JScrollBarのノブを常に表示する

thumbnail
JScrollBarのノブを常に表示する

JScrollBarのノブの長さがトラックと同じ長さになっても非表示にせず、常に表示されるよう設定します。

↑60 ↓61

NimbusLookAndFeelで子テキストコンポーネントのフォーカスボーダーを親JScrollPaneに適用する

thumbnail
NimbusLookAndFeelで子テキストコンポーネントのフォーカスボーダーを親JScrollPaneに適用する

NimbusLookAndFeelJScrollPaneのビューポートにテキストコンポーネントがひとつだけ配置されている場合、そのフォーカスボーダーを親JScrollPaneに適用するかを切り替えます。

JTableを配置したJScrollPaneの右上コーナー区画に配置されるコンポーネントを取得する

thumbnail
JTableを配置したJScrollPaneの右上コーナー区画に配置されるコンポーネントを取得する

JTableを配置したJScrollPaneの右上コーナー区画に配置されるコンポーネントを取得し、JTableの幅よりJViewportの幅が大きくなる場合はそれを非表示に切り替えます。

JTableが配置されたJScrollPaneのBorderを変更する

thumbnail
JTableが配置されたJScrollPaneのBorderを変更する

JTableが配置されたJScrollPaneに適用されるBorderをまとめて変更します。

JScrollPaneにJTableを配置して連続月間カレンダーを作成する

thumbnail
JScrollPaneにJTableを配置して連続月間カレンダーを作成する

JScrollPaneJTableを配置してマウスホイールなどでスクロール可能な連続月間カレンダーを作成します。

JScrollBarのトラックハイライト色を変更する

thumbnail
JScrollBarのトラックハイライト色を変更する

JScrollBarのトラック色やトラックをマウスでクリックした時に使用されるとハイライト色を変更します。

JTableのセル編集が開始でセルエディタ全体が表示される位置までスクロールする

thumbnail
JTableのセル編集が開始でセルエディタ全体が表示される位置までスクロールする

JTableへのキー入力でセル編集が開始したとき、セルエディタ全体が表示される位置までスクロールするよう設定します。

JListに固定ヘッダを実装する

thumbnail
JListに固定ヘッダを実装する

JListの表示領域に存在する行を検索して特定のデータを保持するセルをヘッダとしてJLayer上に固定して描画します。