今回はこんな感じの部品の配置方法の回です

フィールド値:「NORTH」、「SOUTH」、「CENTER」、「EAST」、「WEST」の5つのstatic変数によって配置できる
このクラス自身では配置位置をあらわす変数(代表例がこの5つ)ぐらいが頻繁に利用する機能で、JFrameなどのクラスに設定用メソッドがあるのでそれを利用して実現する
■JPanelクラス
レイアウトマネージャを重ねるたり複数併用したりするときのための一時クラス
コンストラクタ | 引数 | 説明 |
---|---|---|
new JPanel() | なし | デフォルトのレイアウト方法で配置 |
new JPanel(レイアウトマネージャー) | レイアウトマネージャーオブジェクト (インスタンス変数) | 引数で指定されたレイアウト方法で、配置する |
JPanel は部品を配置するための基本的な役割があり、JFrameには標準装備されている「配置」用クラスである そのためレイアウトマネージャーはJPanelとJFrameの配置パターンを設定するためのクラスという位置づけになりがちなので コンストラクタで部品を実装するときはレイアウトマネージャーは「new コンストラクタ()」という形式のインスタンス変数として扱う
■サンプル
/*インポート宣言*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class GUIBorder extends JFrame implements ActionListener{
Container base = getContentPane();
public static void main(String [] arg) {
JFrame form = new GUIBorder();
form.setVisible(true);
}
GUIBorder(){
/**
* まず最初にJFrameプロパティ設定
*/
this.setTitle("BorderLayoutの部品配置");
this.setSize(400,200);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout() );
/**
* GUI部品の宣言は基本フィールド変数(コンストラクタの外)だが、
* ActionCommandメソッドで部品を識別する場合のみ
* コンストラクタ内で宣言
*/
JButton btn = new JButton("上部");
btn.addActionListener(this);
panel.add(btn,BorderLayout.NORTH);
btn = new JButton("下部");
btn.addActionListener(this);
panel.add(btn,BorderLayout.SOUTH);
btn = new JButton("中央");
btn.addActionListener(this);
panel.add(btn,BorderLayout.CENTER);
btn = new JButton("左側");
btn.addActionListener(this);
panel.add(btn,BorderLayout.EAST);
btn = new JButton("右側");
btn.addActionListener(this);
panel.add(btn,BorderLayout.WEST);
this.add(panel);
}
public void actionPerformed(ActionEvent e){
String cmd = e.getActionCommand(); //部品識別用文字列
JOptionPane.showMessageDialog(null, cmd);//クリックしたボタンの位置をメッセージボックスで表示
}
}
最初にイメージとして見せていたこの画面がまず表示されます
そしてそれぞれのボタンをクリックして次のようなダイアログが表示されます


下部ボタンを押した場合 上部ボタンを押した場合
■ 使用したメソッドの補足
メソッド名 | 引数 | 説明 |
---|---|---|
add(コンポーネント,レイアウト位置) | 第1引数でGUIオブジェクト 第2引数で配置位置 | このメソッドはBorderLayoutのみ第2引数があり冒頭で解説したフィールド変数を指定する |
setLayout(レイアウトマネージャ) | レイアウトマネージャ | レイアウトマネージャを変更する |
ほかにもまだやっていないボタン系の処理とかいろいろあるがレイアウトマネージャだけ着目しているので今回は省略。
前回のレイアウトマネージャの種類一覧にリンク付けしてあるので全部の紹介が終われば最終的には第26回のページが目次になる予定