解答例 - 実習課題3 - 15.テキスト・コンポーネント2
(実習課題3)
以下の簡易エディターを作成しなさい。
- ウィンドウに含まれるコンポーネントは「JTextPane」から作成されるテキストエリア。
- 「insert」メニューが選択されると、追加するコンポーネントまたはアイコンを選択するダイアログが表示される。コンポーネントは任意。
- ダイアログで選択すると、現在のキャレットまたは選択領域にコンポーネントまたはアイコンを挿入する。
解答例
/** * SimpleEditor.java * TECHSCORE Javaユーザインタフェース15章 実習課題3 * * Copyright (c) 2004 Four-Dimensional Data, Inc. */ package com.techscore.ui.chapter15.exercise3; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JScrollPane; import javax.swing.JSlider; import javax.swing.JTextField; import javax.swing.JTextPane; public class SimpleEditor extends JFrame implements ActionListener { private JTextPane textPane; private JMenuItem insertMenu; public SimpleEditor() { super("SimpleEditor"); setDefaultCloseOperation(EXIT_ON_CLOSE); textPane = new JTextPane(); JScrollPane scroll = new JScrollPane( textPane, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); scroll.setPreferredSize(new Dimension(300, 200)); getContentPane().add(scroll); JMenuBar menuBar = new JMenuBar(); setJMenuBar(menuBar); insertMenu = new JMenuItem("insert"); menuBar.add(insertMenu); insertMenu.addActionListener(this); pack(); } String[] components = { "Button", "Slider", "TextField", "Label", "Icon" }; public void actionPerformed(ActionEvent event) { Object component = JOptionPane.showInputDialog( this, "追加したいアイテムを選択して下さい", "SELECT ITEM", JOptionPane.INFORMATION_MESSAGE, null, components, components[0]); //選択されたコンポーネントを追加する。 if (component != null) { if (component.equals(components[0])) { textPane.insertComponent(new JButton("button")); } else if (component == components[1]) { textPane.insertComponent(new JSlider()); } else if (component == components[2]) { textPane.insertComponent(new JTextField(100)); } else if (component == components[3]) { textPane.insertComponent(new JLabel("label")); } else if (component == components[4]) { textPane.insertIcon( new ImageIcon("com/techscore/ui/chapter15/exercise3/4dd.gif")); } } } public static void main(String[] args) { new SimpleEditor().setVisible(true); } }