Swingでは、JScrollPaneを使うことで画面に収まらない領域をスクロールさせて表示することができる。
使い方は簡単で、JScrollPaneのコンストラクタにスクロールさせたいJComponentを渡すだけである。
スクロール対象のJComponentにはあらかじめsetPreferredSize()メソッドでスクロールが開始する大きさを指定しておく。
JScrollPaneが指定した大きさよりも小さくなるとスクロールバーが自動的に表示される。
※もちろん、スクロールバーの表示/非表示は設定できる。
JScrollPaneの使用例
final MyComponent mc = new MyComponent ();
mc.setPreferredSize(new Dimension(400,600));
// スクロールペインを作成する
// 常にスクロールバーを表示する設定
final JScrollPane sp = new JScrollPane(
myComponent,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS );
以前に作った、ドラッグで絵を書くプログラムに組み込んでみた。
public class Main {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
final JFrame frame = new JFrame();
frame.setBounds(100, 100, 400, 300);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// MyCanvasはJComponentを継承したクラスで
// マウスをドラッグすると軌跡が描かれる。ソースは以前の記事を参照のこと。
final MyCanvas mc = new MyCanvas();
mc.setPreferredSize(new Dimension(400,600));
final JScrollPane sp = new JScrollPane(
mc,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS );
frame.getContentPane().add(sp);
frame.setVisible(true);
}
});
}
}
このようにスクロールバーが表示されるようになった。
