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

