JScrollPaneのスクロール

JScrollPane jsp

を定義して、思いっきり縦長のスクロールリストを表示する。
一番下に追加して再描画する際、自動でスクロールリストを最下部に移動したい。

JScrollBarクラスに、setValue()で値をセットするメソッドがあるが、
これではスクロールしないというのは周知の事実:-P

でも、どうしても一番下にスクロールしたい…という場合は、Viewportを設定するそうだ。

jsp.getViewport().scrollRectToVisible(new Rectangle(0, Integer.MAX_VALUE - 1, 1, 1));

これが、汎用で使えるコードである。

…と、ここまでがGoogle先生が教えてくれた内容なのだが、実際に使ってみると、これにも不具合がある。

スクロールリストが既に一番下にある状態で、このViewportを設定する(例えば連続で2回呼ぶ)と、一番上に戻ってしまうのだ!

なんということでしょう。

というわけで、確実に自動で一番下にするには、まず一番上に戻すのがいいだろう。

jsp.getVerticalScrollBar().setValue(0);
jsp.listPane.getViewport().scrollRectToVisible(new Rectangle(0, Integer.MAX_VALUE - 1, 1, 1));

これで今のところはOKだった。
[PR]
by miries | 2013-10-05 00:43 | ゲームを作る


<< PlayStation4 予約... 久しぶりのJavaSwing >>