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

