目次へ

解答例 - 実習課題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);
    }

}

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp