解答例 - 実習課題3 - 11.ダイアログ
(実習課題3)
実習課題2のプログラムを改良しなさい。
- 「削除」メニューを追加し、そのメニューを選択すると、削除するアイテムを選択するダイアログを表示する。そのダイアログは「JOptionPane」で作成する事。
- (ヒント)「JOptionPane」の「showInputDialog」メソッドで引数が7つあるものを使用する。
解答例
/**
* OptionPane2.java
* TECHSCORE Javaユーザインタフェース11章 実習課題3
*
* Copyright (c) 2004 Four-Dimensional Data, Inc.
*/
package com.techscore.ui.chapter11.exercise3;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
public class OptionPane2 extends JFrame implements ActionListener {
private JMenuItem addMenuItem, deleteMenuItem;
private JList list;
private DefaultListModel listModel;
public OptionPane2() {
super("OptionPane2");
setDefaultCloseOperation(EXIT_ON_CLOSE);
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
JMenu cityMenu = new JMenu("edit");
menuBar.add(cityMenu);
String listItem[] =
{ "Sapporo", "Sendai", "Chiba", "Tokyo", "Shizuoka", "Nagoya", "Osaka", "Okayama", "Hiroshima", "Fukuoka" };
listModel = new DefaultListModel();
for (int i = 0; i < listItem.length; i++) {
listModel.addElement(listItem[i]);
}
list = new JList(listModel);
getContentPane().add(new JScrollPane(list));
addMenuItem = new JMenuItem("add");
addMenuItem.addActionListener(this);
cityMenu.add(addMenuItem);
deleteMenuItem = new JMenuItem("delete");
deleteMenuItem.addActionListener(this);
cityMenu.add(deleteMenuItem);
pack();
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == addMenuItem) {
String str = JOptionPane.showInputDialog("追加する都市名を入力して下さい。");
if (str == null) { // キャンセルボタンを押したとき
return;
} else if (str.equals("")) { // 入力が無かったとき
JOptionPane.showMessageDialog(null, "都市名が入力されていません。", "alert", JOptionPane.ERROR_MESSAGE);
} else { // 正しく入力されていたとき
listModel.addElement(str);
}
} else if (e.getSource() == deleteMenuItem) {
Object obj =
JOptionPane.showInputDialog(
null,
"削除する都市名を選んで下さい。",
"削除",
JOptionPane.PLAIN_MESSAGE,
null,
listModel.toArray(),
null);
listModel.removeElement(obj);
}
}
public static void main(String args[]) {
new OptionPane2().setVisible(true);
}
}

