2009年5月4日月曜日

Java AWT レイアウトマネージャ CardLayout

CardLayoutは組み込んだコントロールの中から1つだけを表示するレイアウトマネージャです。
カードを切り替えるように、一つのカードだけを画面に表示し、前後のカードに移動しながら表示を切り替えていきます。
カードを入れ替えるには next()、previous()、first()、last()、show() などのメソッドを用います。

package MyPackage1;

import java.awt.*;
import java.awt.event.*;

public class CardLayoutSample {
/*
* エントリポイント
*/
public static void main(String args[]){
new CardLayoutSample();
}

Frame frm;
Panel pnlMove;
Panel pnlCards;
CardLayout cl;

/*
* コンストラクタ
*/
public CardLayoutSample(){
//フレームを作成します。
frm = new Frame("CardLayoutSample");
//フレームサイズを指定します。
frm.setSize(300,300);  
//無名クラスを使用してフレームを閉じます。
frm.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent ev){
System.exit(0);
}
});
//***移動ボタン用パネルを作成します***//  
pnlMove = new Panel();  
pnlMove.setLayout(new FlowLayout());  
//--ボタンFirst  
Button btn1 = new Button("First");   
pnlMove.add(btn1);  
btn1.addActionListener(new moveBtnActionAdapter());  
btn1.setActionCommand("First");  
//--ボタンPrevious  
Button btn2 = new Button("Previous");   
pnlMove.add(btn2);  
btn2.addActionListener(new moveBtnActionAdapter());  
btn2.setActionCommand("Previous");  
//--ボタンNext  
Button btn3 = new Button("Next");    
pnlMove.add(btn3);  
btn3.addActionListener(new moveBtnActionAdapter());  
btn3.setActionCommand("Next");  
//--ボタンLast  
Button btn4 = new Button("Last");    
pnlMove.add(btn4);  
btn4.addActionListener(new moveBtnActionAdapter());  
btn4.setActionCommand("Last");  
//パネルをFrameに追加します。 
frm.add(pnlMove,BorderLayout.NORTH );  

//***カードパネルを作成します***//  
pnlCards = new Panel();  
this.cl = new CardLayout();  
pnlCards.setLayout(cl);  
//--カード1  
Panel pnlCard1 = new Panel();  
pnlCard1.add(new Label("Card1"));  
pnlCards.add(pnlCard1,"Card1");  
//--カード2  
Panel pnlCard2 = new Panel();  
pnlCard2.add(new Label("Card2"));  
pnlCards.add(pnlCard2,"Card2");  
//--カード3  
Panel pnlCard3 = new Panel();  
pnlCard3.add(new Label("Card3"));  
pnlCards.add(pnlCard3,"Card3");  
//--カード4  
Panel pnlCard4 = new Panel();  
pnlCard4.add(new Label("Card4"));  
pnlCards.add(pnlCard4,"Card4");  
//フレームにパネルを追加します。
frm.add(pnlCards,BorderLayout.CENTER);  
//pnlCardsの「Card2」を表示します。  
cl.show(pnlCards, "Card2");  

//ウインドウを表示します。
frm.setVisible(true); 
}

/*
* 移動ボタンActionListener
*/
public class moveBtnActionAdapter implements ActionListener {
@Override
public void actionPerformed(ActionEvent arg0) {
String cmd = arg0.getActionCommand();
if (cmd.equals("First")){
cl.first(frm);
}else if (cmd.equals("Previous")){
cl.previous(frm);
}else if (cmd.equals("Next")){
cl.next(frm);
}else if (cmd.equals("Last")){
cl.last(frm);
}

}

}
}


0 件のコメント: