java 第28回    FlowLayoutクラス | whichのブログ ~プログラミング体験記~

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

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

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

まずはじめに今やっている「レイアウトマネージャ」というジャンルのGUI部品はいわゆるオプションみたいなものです。
ですのでsetLayoutを呼び出さないでthis.add(new JButton("ボタン"));を実行してもちゃんと実装されます。
どういう原理かというと実は数値型の初期値が0のようにレイアウトにも初期値(デフォルト)が設定されていて
これが今回の「Flow」Layoutというクラスです

■FlowLayoutクラス
というわけで今回は特に指定しない場合の配置方法でもあるこの配置をやります

デフォルト=何も設定しなくてもよいという考え方もあるように、
このクラスはメソッドもフィールド変数も特に知っておかねばならないようなものはありません
(あってもレイアウトマネジャー共通のものが多い)

■サンプル

import java.awt.*;import java.awt.event.*;import javax.swing.*;public class GUIFlow extends JFrame implements ActionListener{
Container base = getContentPane();
public static void main(String [] arg) {
JFrame form = new GUIFlow();
      form.setVisible(true);
}
    GUIFlow(){
/**
         * まず最初にJFrameプロパティ設定
*/
this.setTitle("FlowLayout");
this.setSize(300,200);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        JPanel panel = new JPanel();
panel.setLayout(new FlowLayout() );
/**
* GUI部品の宣言は基本フィールド変数(コンストラクタの外)だが、
* ActionCommandメソッドで部品を識別する場合のみ
* コンストラクタ内で宣言
*/
JButton btn;
for(int i=1;i<=10;i++){
btn = new JButton("ID:" + i);
btn.addActionListener(this);
panel.add(btn);
}
this.add(panel);
}
public void actionPerformed(ActionEvent e){
String cmd = e.getActionCommand(); //部品識別用文字列
JOptionPane.showMessageDialog(null, cmd);//クリックしたボタンの位置をメッセージボックスで表示
}
}
実行結果

ソースコードは前回のものに「BorderLayout⇒FlowLayoutに変更」と「ボタンの数を10こに変更」の2点の変更を加えたもので
イベント処理は変わらないため、前回のようにメッセージボックスに「ID:5」のようにボタンのテキストが表示されればOKです

FlowLayoutはみたとおり部品を均等に配置するのも特徴ですが、それよりも「ID:9」と「ID:10」のボタン注目して中央ぞろえで配置しているという特徴の方が重要です

なので同じ均等配置という特徴をもつ「GridLayout」を次回やります。