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

