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