- PR -

JScrollPaneのスクロールを制御したい

1
投稿者投稿内容
サラリーマン
常連さん
会議室デビュー日: 2004/01/28
投稿数: 27
投稿日時: 2004-03-19 15:55
JScrollPaneの使用方法について質問なのですが、
JScrollPaneのスクロールをプログラム内から指定する事は可能なのでしょうか?
例えば、最上層から最下層にスクロールを移動させる等・・・。

よろしくお願いします。
さくらば
大ベテラン
会議室デビュー日: 2002/11/12
投稿数: 145
投稿日時: 2004-03-20 05:05
こんにちは、さくらばです。

引用:

サラリーマンさんの書き込み (2004-03-19 15:55) より:
JScrollPaneの使用方法について質問なのですが、
JScrollPaneのスクロールをプログラム内から指定する事は可能なのでしょうか?
例えば、最上層から最下層にスクロールを移動させる等・・・。



JScrollPane から JScrollBar を取り出して、それに対して操作すればいいのでは
ないでしょうか。たとえば、最後に移動するならこんな感じになります。

コード:
            JFrame frame = new JFrame();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setBounds(100, 100, 400, 400);

            JScrollPane pane = new JScrollPane(new JLabel(new ImageIcon(image)));
            frame.getContentPane().add(pane);
            frame.setVisible(true);

               ...

            JScrollBar vBar = pane.getVerticalScrollBar();
            int vBarMax = vBar.getMaximum();
            vBar.setValue(vBarMax);

            JScrollBar hBar = pane.getHorizontalScrollBar();
            int hBarMax = hBar.getMaximum();
            hBar.setValue(hBarMax);


unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2004-03-20 10:33
unibon です。こんにちわ。

引用:

サラリーマンさんの書き込み (2004-03-19 15:55) より:
JScrollPaneの使用方法について質問なのですが、
JScrollPaneのスクロールをプログラム内から指定する事は可能なのでしょうか?
例えば、最上層から最下層にスクロールを移動させる等・・・。


JComponent.scrollRectToVisible を使うことができます。
http://java.sun.com/j2se/1.4/ja/docs/ja/api/javax/swing/JComponent.html#scrollRectToVisible(java.awt.Rectangle)
ただこれは、メソッド名の通り、「指定された領域が可視範囲になるようにスクロールする」という機能であり、指定がダイレクトではなく、ちょっと回りくどい指定が必要になります。具体的には、ちょっと説明しづらいのですが、必要最小限のスクロール量の分しかスクロールしてくれないのです。
#実際に使うと挙動が分かります。

より複雑なことをさせたいときは、JScrollPane から JViewport を、
http://java.sun.com/j2se/1.4/ja/docs/ja/api/javax/swing/JScrollPane.html#getViewport()
で取り出して、JViewport に対して操作することになります。
サラリーマン
常連さん
会議室デビュー日: 2004/01/28
投稿数: 27
投稿日時: 2004-03-22 10:08
unibonさん、さくらばさん返答ありがとうございます!!
返答が遅れて、申し訳ございませんでした。

返答を参考にして、何とかできるようになりました。
本当にありがとうございました!!
1

スキルアップ/キャリアアップ(JOB@IT)