モーダルダイアログ
| 日本語 | 注意深く聞く対話窓 |
| 英語 | modal dialog |
| ふりがな | もーだるだいあろぐ |
| フリガナ | モーダルダイアログ |
閉じるまで表示元ウィンドウを操作できないダイアログ。
ダイアログの一種。ダイアログを表示すると、表示元のウィンドウが操作できなくなる種類のダイアログ。
逆に、表示元ウィンドウを操作できるものを「モードレスダイアログ」と言う。
一般に「ダイアログ」と言えば「モーダルダイアログ」の事を指す場合が多い。
表示元のウィンドウを操作できなくするため、確認時に向いている。
モーダルダイアログは、AWTであればDialogクラスのmodal引数にtrueを渡すことでモーダルダイアログとすることができる。この際、同じくコンストラクタの引数でownerに渡したウィンドウが表示元のウィンドウとなり、このウィンドウが操作できなくなる。
show()メソッドで表示すると、hide()メソッドを呼び出すまでshow()メソッドから返らない。また、表示元ウィンドウのイベントハンドラも呼び出されなくなり、アクティブにすることもできなくなる。
ダイアログの一種。ダイアログを表示すると、表示元のウィンドウが操作できなくなる種類のダイアログ。
逆に、表示元ウィンドウを操作できるものを「モードレスダイアログ」と言う。
一般に「ダイアログ」と言えば「モーダルダイアログ」の事を指す場合が多い。
表示元のウィンドウを操作できなくするため、確認時に向いている。
モーダルダイアログは、AWTであればDialogクラスのmodal引数にtrueを渡すことでモーダルダイアログとすることができる。この際、同じくコンストラクタの引数でownerに渡したウィンドウが表示元のウィンドウとなり、このウィンドウが操作できなくなる。
show()メソッドで表示すると、hide()メソッドを呼び出すまでshow()メソッドから返らない。また、表示元ウィンドウのイベントハンドラも呼び出されなくなり、アクティブにすることもできなくなる。
参考サイト
// Sample.java
import java.awt.Frame;
import java.awt.Dialog;
import java.awt.Label;
import java.awt.Button;
import java.awt.GridLayout;
import java.awt.event.ActionListener;
import java.awt.event.WindowListener;
import java.awt.event.ActionEvent;
import java.awt.event.WindowEvent;
public class Sample
{
public static void main( String[] args )
{
// ウィンドウを作ります。
NormalWindow normalWindow = new NormalWindow();
// コンストラクタでウィンドウが作られます。
}
}
/**
* 普通のウィンドウクラス。
*/
class NormalWindow extends Frame implements WindowListener
{
/**
* コンストラクタ。
*/
public NormalWindow()
{
// ウィンドウを作ります。
super( "テストウィンドウ" );
addWindowListener( this );
setSize( 400 , 300 );
setVisible( true );
}
/**
* ウィンドウが閉じようとするときに呼ばれるメソッド。
*/
public void windowClosing( WindowEvent windowEvent )
{
System.out.println( "NormalWindow#windowClosing()" );
// ウィンドウを閉じていいか、ダイアログで確認します。
// ダイアログそのものはコンストラクタで作られます。
CloseDialog dialog = new CloseDialog( this );
if( dialog.isOk )
{
// 「OK」ボタンが押されたのでウィンドウの終了処理を行います。
dispose();
}
}
/**
* ウィンドウが閉じるときに呼ばれるメソッド。
*/
public void windowClosed( WindowEvent windowEvent )
{
System.out.println( "NormalWindow#windowClosed()" );
System.exit( 0 );
}
/**
* 以下、その他イベントハンドラ。
* これらのメソッドはWindowListenerインターフェイスの
* メソッドなので、全てオーバーライドする必要があるためです。
*/
public void windowActivated( WindowEvent windowEvent )
{
System.out.println( "NormalWindow#windowActivated()" );
}
public void windowDeactivated( WindowEvent windowEvent )
{
System.out.println( "NormalWindow#windowDeactivated()" );
}
public void windowDeiconified( WindowEvent windowEvent )
{
System.out.println( "NormalWindow#windowDeiconified()" );
}
public void windowIconified( WindowEvent windowEvent )
{
System.out.println( "NormalWindow#windowIconified()" );
}
public void windowOpened( WindowEvent windowEvent )
{
System.out.println( "NormalWindow#windowOpened()" );
}
}
/**
* 終了確認ダイアログクラス。
*/
class CloseDialog extends Dialog implements ActionListener
{
/** OKならtrue、キャンセルならfalseのフラグ。 */
public boolean isOk = false;
/**
* コンストラクタ。
*/
public CloseDialog( Frame frame )
{
// 第3引数にtrueをセットすることで、モーダルダイアログにします。
super( frame, "終了確認", true );
setSize( 200 , 100 );
// 縦3段のレイアウトにします。
setLayout( new GridLayout( 3, 0 ) );
// ダイアログに表示する文字列を貼り付けます。
Label lable = new Label( "終了します。よろしいですか?" );
add( lable );
// OKボタンを貼り付けます。
Button buttonOk = new Button( "OK" );
buttonOk.addActionListener( this );
add( buttonOk );
// キャンセルボタンを貼り付けます。
Button buttonCancel = new Button( "キャンセル" );
buttonCancel.addActionListener( this );
add( buttonCancel );
// ダイアログを表示します。
show();
}
/**
* ボタンが押されたときに呼び出されるメソッドです。
*/
public void actionPerformed( ActionEvent event )
{
// OKボタンが押されていたらisOkにtrueをセットします。
if( event.getActionCommand().equals( "OK" ) )
{
isOk = true;
}
else
{
isOk = false;
}
// ダイアログを閉じます。
hide();
}
}
import java.awt.Frame;
import java.awt.Dialog;
import java.awt.Label;
import java.awt.Button;
import java.awt.GridLayout;
import java.awt.event.ActionListener;
import java.awt.event.WindowListener;
import java.awt.event.ActionEvent;
import java.awt.event.WindowEvent;
public class Sample
{
public static void main( String[] args )
{
// ウィンドウを作ります。
NormalWindow normalWindow = new NormalWindow();
// コンストラクタでウィンドウが作られます。
}
}
/**
* 普通のウィンドウクラス。
*/
class NormalWindow extends Frame implements WindowListener
{
/**
* コンストラクタ。
*/
public NormalWindow()
{
// ウィンドウを作ります。
super( "テストウィンドウ" );
addWindowListener( this );
setSize( 400 , 300 );
setVisible( true );
}
/**
* ウィンドウが閉じようとするときに呼ばれるメソッド。
*/
public void windowClosing( WindowEvent windowEvent )
{
System.out.println( "NormalWindow#windowClosing()" );
// ウィンドウを閉じていいか、ダイアログで確認します。
// ダイアログそのものはコンストラクタで作られます。
CloseDialog dialog = new CloseDialog( this );
if( dialog.isOk )
{
// 「OK」ボタンが押されたのでウィンドウの終了処理を行います。
dispose();
}
}
/**
* ウィンドウが閉じるときに呼ばれるメソッド。
*/
public void windowClosed( WindowEvent windowEvent )
{
System.out.println( "NormalWindow#windowClosed()" );
System.exit( 0 );
}
/**
* 以下、その他イベントハンドラ。
* これらのメソッドはWindowListenerインターフェイスの
* メソッドなので、全てオーバーライドする必要があるためです。
*/
public void windowActivated( WindowEvent windowEvent )
{
System.out.println( "NormalWindow#windowActivated()" );
}
public void windowDeactivated( WindowEvent windowEvent )
{
System.out.println( "NormalWindow#windowDeactivated()" );
}
public void windowDeiconified( WindowEvent windowEvent )
{
System.out.println( "NormalWindow#windowDeiconified()" );
}
public void windowIconified( WindowEvent windowEvent )
{
System.out.println( "NormalWindow#windowIconified()" );
}
public void windowOpened( WindowEvent windowEvent )
{
System.out.println( "NormalWindow#windowOpened()" );
}
}
/**
* 終了確認ダイアログクラス。
*/
class CloseDialog extends Dialog implements ActionListener
{
/** OKならtrue、キャンセルならfalseのフラグ。 */
public boolean isOk = false;
/**
* コンストラクタ。
*/
public CloseDialog( Frame frame )
{
// 第3引数にtrueをセットすることで、モーダルダイアログにします。
super( frame, "終了確認", true );
setSize( 200 , 100 );
// 縦3段のレイアウトにします。
setLayout( new GridLayout( 3, 0 ) );
// ダイアログに表示する文字列を貼り付けます。
Label lable = new Label( "終了します。よろしいですか?" );
add( lable );
// OKボタンを貼り付けます。
Button buttonOk = new Button( "OK" );
buttonOk.addActionListener( this );
add( buttonOk );
// キャンセルボタンを貼り付けます。
Button buttonCancel = new Button( "キャンセル" );
buttonCancel.addActionListener( this );
add( buttonCancel );
// ダイアログを表示します。
show();
}
/**
* ボタンが押されたときに呼び出されるメソッドです。
*/
public void actionPerformed( ActionEvent event )
{
// OKボタンが押されていたらisOkにtrueをセットします。
if( event.getActionCommand().equals( "OK" ) )
{
isOk = true;
}
else
{
isOk = false;
}
// ダイアログを閉じます。
hide();
}
}
// Sample.java
import java.awt.Frame;
import java.awt.Dialog;
import java.awt.Label;
import java.awt.Button;
import java.awt.GridLayout;
import java.awt.event.ActionListener;
import java.awt.event.WindowListener;
import java.awt.event.ActionEvent;
import java.awt.event.WindowEvent;
public class Sample
{
public static void main( String[] args )
{
// ウィンドウを作ります。
NormalWindow normalWindow = new NormalWindow();
// コンストラクタでウィンドウが作られます。
}
}
/**
* 普通のウィンドウクラス。
*/
class NormalWindow extends Frame implements WindowListener
{
/**
* コンストラクタ。
*/
public NormalWindow()
{
// ウィンドウを作ります。
super( "テストウィンドウ" );
addWindowListener( this );
setSize( 400 , 300 );
setVisible( true );
}
/**
* ウィンドウが閉じようとするときに呼ばれるメソッド。
*/
public void windowClosing( WindowEvent windowEvent )
{
System.out.println( "NormalWindow#windowClosing()" );
// ウィンドウを閉じていいか、ダイアログで確認します。
// ダイアログそのものはコンストラクタで作られます。
CloseDialog dialog = new CloseDialog( this );
if( dialog.isOk )
{
// 「OK」ボタンが押されたのでウィンドウの終了処理を行います。
dispose();
}
}
/**
* ウィンドウが閉じるときに呼ばれるメソッド。
*/
public void windowClosed( WindowEvent windowEvent )
{
System.out.println( "NormalWindow#windowClosed()" );
System.exit( 0 );
}
/**
* 以下、その他イベントハンドラ。
* これらのメソッドはWindowListenerインターフェイスの
* メソッドなので、全てオーバーライドする必要があるためです。
*/
public void windowActivated( WindowEvent windowEvent )
{
System.out.println( "NormalWindow#windowActivated()" );
}
public void windowDeactivated( WindowEvent windowEvent )
{
System.out.println( "NormalWindow#windowDeactivated()" );
}
public void windowDeiconified( WindowEvent windowEvent )
{
System.out.println( "NormalWindow#windowDeiconified()" );
}
public void windowIconified( WindowEvent windowEvent )
{
System.out.println( "NormalWindow#windowIconified()" );
}
public void windowOpened( WindowEvent windowEvent )
{
System.out.println( "NormalWindow#windowOpened()" );
}
}
/**
* 終了確認ダイアログクラス。
*/
class CloseDialog extends Dialog implements ActionListener
{
/** OKならtrue、キャンセルならfalseのフラグ。 */
public boolean isOk = false;
/**
* コンストラクタ。
*/
public CloseDialog( Frame frame )
{
// 第3引数にtrueをセットすることで、モーダルダイアログにします。
super( frame, "終了確認", true );
setSize( 200 , 100 );
// 縦3段のレイアウトにします。
setLayout( new GridLayout( 3, 0 ) );
// ダイアログに表示する文字列を貼り付けます。
Label lable = new Label( "終了します。よろしいですか?" );
add( lable );
// OKボタンを貼り付けます。
Button buttonOk = new Button( "OK" );
buttonOk.addActionListener( this );
add( buttonOk );
// キャンセルボタンを貼り付けます。
Button buttonCancel = new Button( "キャンセル" );
buttonCancel.addActionListener( this );
add( buttonCancel );
// ダイアログを表示します。
show();
}
/**
* ボタンが押されたときに呼び出されるメソッドです。
*/
public void actionPerformed( ActionEvent event )
{
// OKボタンが押されていたらisOkにtrueをセットします。
if( event.getActionCommand().equals( "OK" ) )
{
isOk = true;
}
else
{
isOk = false;
}
// ダイアログを閉じます。
hide();
}
}




