今回でいよいよ最後のレイアウトマネージャーです(正確にはAndroidになるともう数個増える)
このレイアウトは画面を1枚のカードとみなして複数の画面を管理することができ、画面遷移系のメソッドによる画面切り替えができるという特徴があります
わかりやすくいうならインストーラーのようなアプリケーションに用いられます
なので一般的ではないがいままでののような配置を意識する用途でつかうレイアウトマネージャーではありません
コンストラクタ: new CardLayout();
CardLayoutオブジェクトの生成
CardLayoutオブジェクトの生成
メソッド
メソッド名 | 説明 |
---|---|
first(panel) | 最初に登録された画面に移動 |
previous(panel) | 1つ前の画面に移動 |
next(panel) | 次の画面に移動する |
last(panel) | 最後に登録された画面に移動する |
■サンプルプログラム
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class GUICard extends JFrame implements ActionListener{
CardLayout card;
JPanel panel;
public static void main(String [] agr) {
JFrame f = new GUICard();
f.setVisible(true);
}
public GUICard(){
setTitle("CardLayout");
setSize(400,150);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
card = new CardLayout();
JPanel cmd = new JPanel();
panel = new JPanel();
JPanel p1,p2,p3;
/*1枚目*/
p1 = new JPanel();
JButton btn = new JButton("実行");
p1.add(btn,BorderLayout.WEST);
/*2枚目*/
p2 = new JPanel();
btn = new JButton("背景の変更");
p2.add(btn);
/*3枚目*/
p3 = new JPanel();
JLabel label = new JLabel("選択したチェック項目:");
p3.add(label);
JCheckBox jc = new JCheckBox("車");
p3.add(jc);
jc = new JCheckBox("船");
p3.add(jc);
jc = new JCheckBox("飛行機");
p3.add(jc);
panel.setLayout(card);
panel.add(p1, "pane1");
panel.add(p2,"pane2");
panel.add(p3,"box");
/*共通*/
btn = new JButton("First");
btn.addActionListener(this);
btn.setActionCommand("First");
cmd.add(btn);
btn = new JButton("Prev");
btn.addActionListener(this);
btn.setActionCommand("Prev");
cmd.add(btn);
btn = new JButton("Next");
btn.addActionListener(this);
btn.setActionCommand("Next");
cmd.add(btn);
btn = new JButton("Last");
btn.addActionListener(this);
btn.setActionCommand("Last");
cmd.add(btn);
cmd.add(panel);
this.add(panel,BorderLayout.NORTH);
this.add(cmd,BorderLayout.CENTER);
}
public void actionPerformed(ActionEvent e){
String str = e.getActionCommand();
switch(str){
case "First" : card.first(panel);
break;
case "Prev" : card.previous(panel);
break;
case "Next" : card.next(panel);
break;
case "Last" : card.last(panel);
break;
}
}
}
(左)2枚目のカードレイアウト (右)最初のレイアウト (真ん中)最後のレイアウト
最初に真ん中の画面が表示され下の4つボタンをクリックすることで3つの画面を行き来できます
今回はあえて画面遷移用ボタン以外にはイベント処理を実装していません。
これでGUIプログラミングの要素「GUI部品」、「レイアウトマネージャ」、「イベント処理」の3つうち「レイアウトマネージャ」が完了しました
今後のスケージュールとしては
ボタンやラベルのような超基本部品⇒イベント処理⇒チェックボックスやラジオボタンのような複数の部品を連動させる部品⇒swingオリジナル部品
でしょか
最初に真ん中の画面が表示され下の4つボタンをクリックすることで3つの画面を行き来できます
今回はあえて画面遷移用ボタン以外にはイベント処理を実装していません。
これでGUIプログラミングの要素「GUI部品」、「レイアウトマネージャ」、「イベント処理」の3つうち「レイアウトマネージャ」が完了しました
今後のスケージュールとしては
ボタンやラベルのような超基本部品⇒イベント処理⇒チェックボックスやラジオボタンのような複数の部品を連動させる部品⇒swingオリジナル部品
でしょか