カスタムダイアログ

コンピュータと、会話的にデータを入力する場合で使うウインドウをダイアログと呼びますが、 そのダイアログ用のクラスがJDialogです。構造は次のようになっています。
java.lang.Object
 └java.awt.Component
  └java.awt.Container
   └java.awt.Window
    └java.awt.Dialog
     └javax.swing.JDialog
詳細は次のリンクで調べましょう。

モーダルダイアログとして使う。

オーナー(直訳:所有者)となるウィンドウから起動する形態で使います。
コンストラクタでオーナーを指定する方法が最も簡単で、 オーナーとなれるのはJFrameまたはJDialogのオブジェクトです。
以下では、JFrameを継承したOwnerFrameで、 JDialogを継承したBrushDialogを3つ生成するコードの例を示します。

package paint;
import java.awt.*;
import javax.swing.*;

public class OwnerFrameApplet extends JApplet
{
	public void check(){//フレームをオーナーとしたダイアログ
		OwnerFrame f = new OwnerFrame();
		new BrushDialog(f);
		new BrushDialog(f);
		new BrushDialog(f);
	}
	public void init(){
		System.out.println("OwnerFrameApplet" + OwnerFrame.count++);
	}
}
class OwnerFrame extends JFrame
{
	public static int count = 0;
	public OwnerFrame(){
		this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		this.setTitle("Owner" + count);
		this.setBounds(100, 40, 150, 120);
		this.setVisible(true);
	}
	public void init(){
		System.out.println("OwnerFrame" + OwnerFrame.count++);
	}
}
class BrushDialog extends JDialog
{
	JPanel panel = new JPanel();
	public BrushDialog(JFrame owner){
		super(owner);
		this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		this.setTitle("Brush");
		this.setContentPane(panel);
		panel.setPreferredSize(new Dimension(25, 25));
		this.pack();
		this.setVisible(true);
	}
	public void init(){
		System.out.println("BrushDialog" + OwnerFrame.count++);
	}
}

←アプレット
OwnerFrameをオーナーとしてBrushDialogを生成
オーナーなしでBrushDialogを生成
ダイアログでなくフレームで生成