解答例 - 実習課題2 - 2.ListとIterator
(実習課題2)
以下のウィンドウ・プログラムを作成しなさい。
- 「List」に対して、任意の「String」オブジェクトを10個以上追加する事。
- 「ListIterator」インタフェースで提供されているメソッド(「前へ」「後ろへ」)に対応するボタンを2つ用意し、それぞれ押した場合に要素の内容がラベルに表示されるようにする事。
解答例
package com.techscore.utility.chapter2.exercise2; 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.ArrayList; import java.util.ListIterator; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.SwingConstants; /** * IteratorExample.java * TECHSCORE Javaユーティリティ2章 実習課題2 * * Copyright (c) 2004 Four-Dimensional Data, Inc. */ public class IteratorExample extends JFrame implements ActionListener { private String player = ""; private JLabel label; private JButton buttons[] = { new JButton("前へ"), new JButton("後ろへ")}; private ListIterator iterator; public IteratorExample() { super("iterator "); setDefaultCloseOperation(EXIT_ON_CLOSE); //配列リストを作成 ArrayList japan = new ArrayList(); String players[] = { "楢崎正剛", "曽ケ端準", "秋田豊", "名良橋晃", "服部年宏", "田中誠", "山田暢久", "宮本恒靖", "松田直樹", "中田英寿", "中村俊輔", "小野伸二", "稲本潤一", "名波浩", "福西崇史", "三都主アレサンドロ", "中田浩二", "小笠原満男", "中山雅史", "高原直泰", "鈴木隆行", "柳沢敦" }; for (int i = 0; i < players.length; i++) { japan.add(players[i]); } iterator = japan.listIterator(); //ボタンを作成 Box box = new Box(BoxLayout.Y_AXIS); Dimension size = new Dimension(100, 20); for (int i = 0; i < buttons.length; i++) { buttons[i].setMinimumSize(size); buttons[i].setPreferredSize(size); buttons[i].setMaximumSize(size); buttons[i].setBackground(Color.blue); buttons[i].setForeground(Color.white); buttons[i].addActionListener(this); box.add(buttons[i]); } //ラベルを作成 label = new JLabel("ジーコ・ジャパン"); label.setHorizontalAlignment(SwingConstants.CENTER); label.setForeground(Color.blue); label.setPreferredSize(new Dimension(150, 40)); //ボタン,ラベルを配置 getContentPane().add(box, BorderLayout.WEST); getContentPane().add(label, BorderLayout.CENTER); pack(); } //ボタンが押されたときの動作を指定 public void actionPerformed(ActionEvent e) { if (e.getSource().equals(buttons[0])) { //前の選手を表示 if (iterator.hasPrevious()) { player = iterator.previous().toString(); label.setText(player); } else { label.setText("前の選手はいません"); } } else if (e.getSource().equals(buttons[1])) { //後の選手を表示 if (iterator.hasNext()) { player = iterator.next().toString(); label.setText(player); } else { label.setText("後ろの選手はいません"); } } } public static void main(String args[]) { new IteratorExample().setVisible(true); } }