解答例 - 実習課題4 - 4.レイアウト・マネージャー
(実習課題4)
以下のプログラムを作成しなさい。
- ウィンドウに含まれるコンポーネントは3つのボタン(JButton)。ラベルの背景、テキストは任意。
- レイアウト・マネージャーは「CardLayout」。3つのボタンは別々のカードに配置する事。
- ウィンドウにはメニューがあり、メニューの構成とそれを選択した場合の動作は以下のとおり。 
    - first : 先頭のカードを表示する
- next : 現在表示している次のカードを表示する
- previous : 現在表示している1つ前のカードを表示する
- last : 最後のカードを表示する
 
- メニューの配置については任意。
解答例
package com.techscore.ui.chapter4.exercise4;
/**
 * CardLayoutFrame.java
 * TECHSCORE Javaユーザインタフェース4章 実習課題4
 *
 * Copyright (c) 2004 Four-Dimensional Data, Inc.
 */
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
public class CardLayoutFrame extends JFrame implements ActionListener {
    private CardLayout layout;
    private JMenuItem firstMenu;
    private JMenuItem nextMenu;
    private JMenuItem previousMenu;
    private JMenuItem lastMenu;
    public CardLayoutFrame() {
        super("CardLayoutFrame");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        //カードレイアウトを作成。
        layout = new CardLayout();
        getContentPane().setLayout(layout);
        //ボタンを3つ,レイアウトに配置する
        JButton blue = new JButton("1");
        blue.setBackground(Color.blue);
        getContentPane().add(blue, "first");
        JButton yellow = new JButton("2");
        yellow.setBackground(Color.yellow);
        getContentPane().add(yellow, "second");
        JButton red = new JButton("3");
        red.setBackground(Color.red);
        getContentPane().add(red, "third");
        //メニューを作成
        JMenuBar menuBar = new JMenuBar();
        setJMenuBar(menuBar);
        JMenu fileMenu = new JMenu("Select Card");
        menuBar.add(fileMenu);
        firstMenu = new JMenuItem("first");
        fileMenu.add(firstMenu);
        firstMenu.addActionListener(this);
        nextMenu = new JMenuItem("next");
        fileMenu.add(nextMenu);
        nextMenu.addActionListener(this);
        previousMenu = new JMenuItem("previous");
        fileMenu.add(previousMenu);
        previousMenu.addActionListener(this);
        lastMenu = new JMenuItem("last");
        fileMenu.add(lastMenu);
        lastMenu.addActionListener(this);
        pack();
    }
    public void actionPerformed(ActionEvent event) {
        if (event.getSource() == firstMenu) {
            layout.first(getContentPane());
        } else if (event.getSource() == nextMenu) {
            layout.next(getContentPane());
        } else if (event.getSource() == previousMenu) {
            layout.previous(getContentPane());
        } else if (event.getSource() == lastMenu) {
            layout.last(getContentPane());
        }
    }
    public static void main(String args[]) {
        new CardLayoutFrame().setVisible(true);
    }
}

![Webアプリ開発エンジニアのための技術情報サイト[テックスコア]](/common/img/description.gif) 
 







