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