モードレスダイアログ
日本語 | 注意深く聞かない対話窓 |
英語 | modeless dialog |
ふりがな | もーどれすだいあろぐ |
フリガナ | モードレスダイアログ |
表示しても表示元ウィンドウに制限をしないダイアログ。
ダイアログの一種。ウィンドウと同じように普通に表示され、普通に操作できるダイアログ。
逆に、表示すると表示元ウィンドウが操作できなくなるダイアログを「モーダルダイアログ」と言う。
ほとんどウィンドウと同じで、あまりダイアログとしてのメリットがない。
特にAWTを使用する場合にはプログラム上もウィンドウと近く、ウィンドウを作った方がいいように思える。
AWTの場合、Dialogクラスのコンストラクタのmodalにfalseを渡すことでモードレスダイアログとすることができる。
この場合、show()メソッドを呼び出すと、ダイアログ表示後すぐに返ってくる。また、表示元ウィンドウはそのまま使用できる。
ダイアログの一種。ウィンドウと同じように普通に表示され、普通に操作できるダイアログ。
逆に、表示すると表示元ウィンドウが操作できなくなるダイアログを「モーダルダイアログ」と言う。
ほとんどウィンドウと同じで、あまりダイアログとしてのメリットがない。
特にAWTを使用する場合にはプログラム上もウィンドウと近く、ウィンドウを作った方がいいように思える。
AWTの場合、Dialogクラスのコンストラクタのmodalにfalseを渡すことでモードレスダイアログとすることができる。
この場合、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 );
// 終了ダイアログも表示します。
WindowCloseDialog dialog = new WindowCloseDialog( this );
}
/**
* ウィンドウが閉じようとするときに呼ばれるメソッド。
*/
public void windowClosing( WindowEvent windowEvent )
{
System.out.println( "NormalWindow#windowClosing()" );
// ウィンドウを閉じます。
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 WindowCloseDialog extends Dialog implements ActionListener
{
/** 親ウィンドウ。 */
private Frame frame = null;
/**
* コンストラクタ。
*/
public WindowCloseDialog( Frame frame )
{
// 第3引数にfalseをセットすることで、モードレスダイアログにします。
super( frame, "終了ダイアログ", false );
setSize( 200 , 100 );
// 親ウィンドウを取っておきます。
this.frame = frame;
// 縦2段のレイアウトにします。
setLayout( new GridLayout( 2, 0 ) );
// ダイアログに表示する文字列を貼り付けます。
Label lable = new Label( "終了します。" );
add( lable );
// 終了ボタンを貼り付けます。
Button buttonOk = new Button( "終了する" );
buttonOk.addActionListener( this );
add( buttonOk );
// ダイアログを表示します。
show();
}
/**
* ボタンが押されたときに呼び出されるメソッドです。
*/
public void actionPerformed( ActionEvent event )
{
// 終了ボタンが押されていたら親ウィンドウを閉じます。
if( event.getActionCommand().equals( "終了する" ) )
{
// ダイアログを閉じます。
hide();
// 親ウィンドウを閉じます。
frame.dispose();
}
}
}
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 );
// 終了ダイアログも表示します。
WindowCloseDialog dialog = new WindowCloseDialog( this );
}
/**
* ウィンドウが閉じようとするときに呼ばれるメソッド。
*/
public void windowClosing( WindowEvent windowEvent )
{
System.out.println( "NormalWindow#windowClosing()" );
// ウィンドウを閉じます。
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 WindowCloseDialog extends Dialog implements ActionListener
{
/** 親ウィンドウ。 */
private Frame frame = null;
/**
* コンストラクタ。
*/
public WindowCloseDialog( Frame frame )
{
// 第3引数にfalseをセットすることで、モードレスダイアログにします。
super( frame, "終了ダイアログ", false );
setSize( 200 , 100 );
// 親ウィンドウを取っておきます。
this.frame = frame;
// 縦2段のレイアウトにします。
setLayout( new GridLayout( 2, 0 ) );
// ダイアログに表示する文字列を貼り付けます。
Label lable = new Label( "終了します。" );
add( lable );
// 終了ボタンを貼り付けます。
Button buttonOk = new Button( "終了する" );
buttonOk.addActionListener( this );
add( buttonOk );
// ダイアログを表示します。
show();
}
/**
* ボタンが押されたときに呼び出されるメソッドです。
*/
public void actionPerformed( ActionEvent event )
{
// 終了ボタンが押されていたら親ウィンドウを閉じます。
if( event.getActionCommand().equals( "終了する" ) )
{
// ダイアログを閉じます。
hide();
// 親ウィンドウを閉じます。
frame.dispose();
}
}
}
// 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 ); // 終了ダイアログも表示します。 WindowCloseDialog dialog = new WindowCloseDialog( this ); } /** * ウィンドウが閉じようとするときに呼ばれるメソッド。 */ public void windowClosing( WindowEvent windowEvent ) { System.out.println( "NormalWindow#windowClosing()" ); // ウィンドウを閉じます。 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 WindowCloseDialog extends Dialog implements ActionListener { /** 親ウィンドウ。 */ private Frame frame = null; /** * コンストラクタ。 */ public WindowCloseDialog( Frame frame ) { // 第3引数にfalseをセットすることで、モードレスダイアログにします。 super( frame, "終了ダイアログ", false ); setSize( 200 , 100 ); // 親ウィンドウを取っておきます。 this.frame = frame; // 縦2段のレイアウトにします。 setLayout( new GridLayout( 2, 0 ) ); // ダイアログに表示する文字列を貼り付けます。 Label lable = new Label( "終了します。" ); add( lable ); // 終了ボタンを貼り付けます。 Button buttonOk = new Button( "終了する" ); buttonOk.addActionListener( this ); add( buttonOk ); // ダイアログを表示します。 show(); } /** * ボタンが押されたときに呼び出されるメソッドです。 */ public void actionPerformed( ActionEvent event ) { // 終了ボタンが押されていたら親ウィンドウを閉じます。 if( event.getActionCommand().equals( "終了する" ) ) { // ダイアログを閉じます。 hide(); // 親ウィンドウを閉じます。 frame.dispose(); } } }