目次へ

解答例 - 実習課題5 - 1.コレクション

(実習課題5)

実習課題1のプログラムを改良しなさい。

  • 「表示」ボタンを押した際の表示を、「Enumeration」インタフェースを利用して行なうようにする事。

解答例

package com.techscore.utility.chapter1.exercise5;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Enumeration;
import java.util.Vector;

import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;

/**
 * EnumerationExample.java
 * TECHSCORE Javaユーティリティ1章 実習課題5
 * 
 * Copyright (c) 2004 Four-Dimensional Data, Inc.
 */
public class EnumerationExample extends JFrame implements ActionListener {

    private JButton continent[] =
        {
            new JButton("Euracia"),
            new JButton("North America"),
            new JButton("Africa"),
            new JButton("Australia"),
            new JButton("South America")};

    private JButton display;
    private JButton initialize;

    private Vector vector = new Vector();

    public EnumerationExample() {
        super("Enumeration example");
        setDefaultCloseOperation(EXIT_ON_CLOSE);

        //記憶させるテキストを示すボタンを5つ作成

        Color backColor[] =
            { Color.green, Color.blue, Color.black, Color.yellow, Color.red };

        Color foreColor[] =
            { Color.black, Color.white, Color.white, Color.black, Color.white };

        Dimension size = new Dimension(150, 50);

        for (int i = 0; i < continent.length; i++) {
            continent[i].setBackground(backColor[i]);
            continent[i].setForeground(foreColor[i]);
            continent[i].setMinimumSize(size);
            continent[i].setPreferredSize(size);
            continent[i].setMaximumSize(size);
            continent[i].addActionListener(this);
        }

        //ボタンを配置

        Box topBox = new Box(BoxLayout.X_AXIS);
        getContentPane().add(topBox, BorderLayout.NORTH);

        topBox.add(Box.createHorizontalStrut(80));
        topBox.add(continent[0]);
        topBox.add(Box.createHorizontalGlue());
        topBox.add(continent[1]);
        topBox.add(Box.createHorizontalStrut(80));

        Box centerBox = new Box(BoxLayout.X_AXIS);
        getContentPane().add(centerBox, BorderLayout.CENTER);

        centerBox.add(Box.createHorizontalStrut(5));
        centerBox.add(continent[2]);
        centerBox.add(Box.createHorizontalGlue());
        centerBox.add(continent[3]);
        centerBox.add(Box.createHorizontalGlue());
        centerBox.add(continent[4]);
        centerBox.add(Box.createHorizontalStrut(5));

        //操作を行うボタンを2つ作成

        display = new JButton("表示");
        display.addActionListener(this);

        initialize = new JButton("初期化");
        initialize.addActionListener(this);

        //操作を行うボタンを配置

        Box bottomBox = new Box(BoxLayout.X_AXIS);
        getContentPane().add(bottomBox, BorderLayout.SOUTH);

        bottomBox.add(Box.createHorizontalStrut(60));
        bottomBox.add(display);
        bottomBox.add(Box.createHorizontalGlue());
        bottomBox.add(initialize);
        bottomBox.add(Box.createHorizontalStrut(60));

        pack();

    }

    public void actionPerformed(ActionEvent e) {

        if (e.getSource().equals(display)) {
            Enumeration enum = vector.elements();
            while (enum.hasMoreElements()) {
                JButton button = (JButton) enum.nextElement();
                System.out.println(button.getText());
            }
        } else if (e.getSource().equals(initialize)) {
            vector.clear();
        } else {
            for (int i = 0; i < continent.length; i++) {
                if (e.getSource().equals(continent[i])) {
                    vector.add(continent[i]);
                    break;
                }
            }
        }

    }

    public static void main(String args[]) {
        new EnumerationExample().setVisible(true);
    }

}

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp