Swingで自由自在なレイアウトを実現する-SpringLayoutの説明- Javaでデスクトップトップアプリ(予定&ToDo管理)を作る-026
Java SpringLayoutを使うことで、Swing上で柔軟なコンポーネントレイアウトを行うことができます。今回はこのSpringLayoutの使い方を解説していきます。
実行サンプルは以下のようなものです。
それぞれのTaskのパネルにSpringLayoutを設定して、コンポーネントをレイアウトしています。
それでは、作っていきましょう。
SpringLayoutの基本
SpringLayoutはコンポーネントを他のコンポーネントとの相対位置で指定して配置していくレイアウトマネージャーです。
これを利用するには、他のレイアウトと同様にコンストラクタを使ってSpringLayoutクラスのオブジェクトを作成します。
JPanel panel = new JPanel();
SpringLayout layout = new SpringLayout();
panel.setLayout(layout);
この状態で、panelにボタンなどのコンポーネントを追加すると、panelの左上と追加されたコンポーネントが接する形で配置されます。
ここからコンポーネントに制約を設定して、レイアウトを設定していきます。
制約の設定
SpringLayoutは各コンポーネントに制約を設置してコンポーネントを配置していきます。例えば、「ボタンの上辺を、パネルの上辺から100ピクセルの位置に置く」と言ったように制約を設定します。
制約を設定するには、putConstraintメソッドを使います。使い方は実例を見てもらうほうが早いです。
JCheckBox ck = new JCheckBox();
layout.putConstraint(SpringLayout.NORTH, ck, 20, SpringLayout.NORTH, panel);
layout.putConstraint(SpringLayout.WEST, ck, 20, SpringLayout.WEST, panel);
panel.add(ck);
最初のputConstranitでは、「ckボックスの上辺を、panelの上辺の20ピクセル下に配置する」と指定しています。
次のputConstranitでは、「ckボックスの左辺を、panelの左辺の20ピクセル右に配置する」と指定しています。
これによりコンポーネントの配置を設定することができます。
それでは今回作ったサンプルのコードを見ていきます。このサンプルは、タスク管理アプリ内でタスクを一覧表示するためにつくったものです。
TaskViewオブジェクトが一つ一つのTaskの情報を表すパネルになります。
[TaskView.java]
アプリ開発記の次の記事はこちら => Swingでスクロールバー機能を利用する-JScrollPaneクラスの使い方- Javaでデスクトップトップアプリ(予定&ToDo管理)を作る-027