コンピュータと、会話的にデータを入力する場合で使うウインドウをダイアログと呼びますが、
そのダイアログ用のクラスが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を生成
ダイアログでなくフレームで生成