java 第27回  BorderLayoutクラス  ー配置パターン | whichのブログ ~プログラミング体験記~

whichのブログ ~プログラミング体験記~

主にJava,vVsual C#,Andoroid,SQLについて
覚え基本た文法やプログラミング技法、各クラスの利用法を
忘れないように形にしたものです

初心者だとかプロだとか特に意識せず利用してもらえるとうれしいです。

■BorderLayoutクラス
今回はこんな感じの部品の配置方法の回です


フィールド値:「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(レイアウトマネージャ)レイアウトマネージャレイアウトマネージャを変更する
「setLayout」はレイアウトパターンを決めるためJPanelクラスの引数ありのコンストラクタと同じ役割がある。
ほかにもまだやっていないボタン系の処理とかいろいろあるがレイアウトマネージャだけ着目しているので今回は省略。
前回のレイアウトマネージャの種類一覧にリンク付けしてあるので全部の紹介が終われば最終的には第26回のページが目次になる予定