【Java入門】JScrollPaneでスクロール可能なJPanelを実装する方法
JPanelとは
JPanelはSwingで最もよく使われるコンテナの一つです。まずは基本的な特徴を確認しておきましょう。
- JPanelはJComponentのサブクラスであり、JComponentはContainerクラスのサブクラスです。したがって、JPanel自体もContainer(コンテナ)として扱えます。
- JPanelは、他のコンポーネントやパネルを配置するための「空の領域」として利用できます。
- テキストフィールド、ラベル、ボタン、チェックボックス、画像など、さまざまなコンポーネントを自由に追加できます。
- FlowLayout、GridLayout、BorderLayoutなどのレイアウトマネージャーを組み合わせることで、コンポーネントのサイズ・位置・配置を柔軟に制御できます。
- JPanelクラスの主なメソッドには、getAccessibleContext()、getUI()、updateUI()、paramString()などがあります。
スクロール可能なJPanelの実装方法
JPanel単体にはスクロール機能がありません。そこで活躍するのがJScrollPaneです。パネルをJScrollPaneでラップしてフレームに追加するだけで、内容が表示領域を超えたときに自動的に縦・横のスクロールバーが表示されるようになります。
実装の手順
- 通常どおりJPanelを作成し、レイアウトマネージャーとコンポーネントを設定する
new JScrollPane(panel)でパネルをJScrollPaneに包む- JScrollPaneをフレームの中央(BorderLayout.CENTERなど)に配置する
コード例
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JScrollablePanelTest extends JFrame {
public JScrollablePanelTest() {
setTitle("JScrollablePanel Test");
setLayout(new BorderLayout());
JPanel panel = createPanel();
add(BorderLayout.CENTER, new JScrollPane(panel));
setSize(375, 250);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
public static JPanel createPanel() {
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(10, 4, 10, 10));
for (int i=0; i < 10; i++) {
for (int j=0; j < 4; j++) {
JLabel label = new JLabel("label " + i + ", " + j);
label.setFont(new Font("Arial", Font.PLAIN, 20));
panel.add(label);
}
}
return panel;
}
public static void main(String [] args) {
new JScrollablePanelTest();
}
}実行結果

このコードを実行すると、10行×4列(合計40個)のラベルがグリッド状に配置されたパネルが生成されます。ウィンドウサイズ(375×250ピクセル)ではすべてのラベルを表示しきれないため、スクロールバーが自動的に現れ、ドラッグすることで画面外のラベルも閲覧できるようになります。
まとめ
JPanelにスクロール機能を持たせたい場合は、パネルを直接フレームに追加するのではなく、JScrollPane経由で追加することがポイントです。GridLayoutのように多数のコンポーネントを扱う場合や、画面サイズより大きなコンテンツを表示したい場合に非常に便利な手法なので、ぜひ覚えておきましょう。
-
JavaのJWindowを使ってスプラッシュ画面を実装する方法
JWindowは、デスクトップ上の任意の位置に表示できるコンテナです。JFrameと異なり、タイトルバーやウィンドウ管理ボタンなどの装飾要素を持ちません。JWindowは、唯一の子クラスとしてJRootPaneを含んでいます。そのcontentPaneが、JWindowに追加される子コンポーネントの親となります。JFrameと同様に、JWindowもトップレベルコンテナの一つであり、「装飾のない(undecorated)JFrame」と考えることができます。タイトルバーやウィンドウメニューといった機能は備えていません。この特性を活かすと、JWindowはスプラッシュ画面として利用できます。アプ
-
Javaでログインフォームを作成する方法!Swingを使った実装例とサンプルコード
JavaではSwingというGUIツールキットを利用することで、デスクトップアプリケーション向けのログインフォームを簡単に開発できます。この記事では、ユーザー名(User Name)とパスワード(Password)の2つのラベル、認証情報を入力するための2つのテキストフィールド、そしてSUBMIT(送信)ボタンを1つ備えたフォームを作成します。正しい認証情報が入力されると、フォーム上に「Hello admin」というメッセージが表示されます。 使用する主なコンポーネント JLabel:ラベルの表示に使用します。 JTextField:ユーザー名の入力欄です。 JPasswordField: