解答例 - 実習課題1 - 16.内部フレームとデスクトップペイン
(実習課題1)
以下のプログラムを作成しなさい。
- ウィンドウに含まれるコンポーネントはデスクトップペインとメニュー。
- メニューで指定すると、デスクトップペインに内部フレームが表示されるようにする事。
- 表示する内部フレームに上限は設けない。
解答例
/** * SimpleMdi.java * TECHSCORE Javaユーザインタフェース16章 実習課題1 * * Copyright (c) 2004 Four-Dimensional Data, Inc. */ package com.techscore.ui.chapter16.exercise1; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JDesktopPane; import javax.swing.JFrame; import javax.swing.JInternalFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; public class SimpleMdi extends JFrame implements ActionListener { private JMenuItem addMenu; private JDesktopPane desktopPane; private int numOfInternal; public SimpleMdi() { super("SimpleMdi"); setDefaultCloseOperation(EXIT_ON_CLOSE); //メニュー JMenu menu = new JMenu("File"); addMenu = new JMenuItem("add"); addMenu.addActionListener(this); menu.add(addMenu); JMenuBar menuBar = new JMenuBar(); menuBar.add(menu); setJMenuBar(menuBar); //JDesktopPane desktopPane = new JDesktopPane(); desktopPane.setPreferredSize(new Dimension(600, 400)); getContentPane().add(desktopPane); pack(); numOfInternal = 0; } public void actionPerformed(ActionEvent event) { JInternalFrame internal = new JInternalFrame("internal frame"); desktopPane.add(internal); internal.reshape(numOfInternal * 10, numOfInternal * 10, 200, 200); internal.setVisible(true); numOfInternal++; if (numOfInternal > 20) { numOfInternal = 0; } } public static void main(String args[]) { new SimpleMdi().setVisible(true); } }