WEB开发网
开发学院WEB开发Jsp Swing 中设置模态窗体和启动位置 阅读

Swing 中设置模态窗体和启动位置

 2008-01-05 08:24:58 来源:WEB开发网   
核心提示:关于 Modal 窗体 在 Swing 中只有 JDialog 可以设置为 Modal 窗体,其方法可以在构造函数(例如“JDialog(Frame owner, boolean modal)”)中传参数,Swing 中设置模态窗体和启动位置,也可以用 setModal(boolean b) 方法设定,

关于 Modal 窗体

   在 Swing 中只有 JDialog 可以设置为 Modal 窗体,其方法可以在构造函数(例如“JDialog(Frame owner, boolean modal)”)中传参数,也可以用 setModal(boolean b) 方法设定, 这个方法是从 Dialog 类继续的。

   在 JFrame 类中,无法通过如 JDialog 的方法设置 Modal 窗体,在 CSDN 有朋友尝试通过在 windowDeiconified() 时 requestFocus() 来模拟 Modal 窗体,代码如下:


Swing 中设置模态窗体和启动位置(图一)Swing 中设置模态窗体和启动位置(图二)public class MyModalFrame extends JFrame implements WindowListener ...{
Swing 中设置模态窗体和启动位置(图三)  PRivate JFrame frame = null;
Swing 中设置模态窗体和启动位置(图三)  private boolean modal = false;
Swing 中设置模态窗体和启动位置(图三)  private String title = null;
Swing 中设置模态窗体和启动位置(图三)
Swing 中设置模态窗体和启动位置(图四)Swing 中设置模态窗体和启动位置(图五)  public MyModalFrame() ...{
Swing 中设置模态窗体和启动位置(图三)    this(null, false);
Swing 中设置模态窗体和启动位置(图六)  }
Swing 中设置模态窗体和启动位置(图三)
Swing 中设置模态窗体和启动位置(图四)Swing 中设置模态窗体和启动位置(图五)  public MyModalFrame(JFrame frame) ...{
Swing 中设置模态窗体和启动位置(图三)    this(frame, false);
Swing 中设置模态窗体和启动位置(图六)  }
Swing 中设置模态窗体和启动位置(图三)
Swing 中设置模态窗体和启动位置(图四)Swing 中设置模态窗体和启动位置(图五)  public MyModalFrame(JFrame frame, boolean modal) ...{
Swing 中设置模态窗体和启动位置(图三)    this(frame, modal, "");
Swing 中设置模态窗体和启动位置(图六)  }
Swing 中设置模态窗体和启动位置(图三)
Swing 中设置模态窗体和启动位置(图四)Swing 中设置模态窗体和启动位置(图五)  public MyModalFrame(JFrame frame, boolean modal, String title) ...{
Swing 中设置模态窗体和启动位置(图三)    super(title);
Swing 中设置模态窗体和启动位置(图三)    this.frame = frame;
Swing 中设置模态窗体和启动位置(图三)    this.modal = modal;
Swing 中设置模态窗体和启动位置(图三)    this.title = title;
Swing 中设置模态窗体和启动位置(图三)    this.init();
Swing 中设置模态窗体和启动位置(图六)  }
Swing 中设置模态窗体和启动位置(图三)
Swing 中设置模态窗体和启动位置(图四)Swing 中设置模态窗体和启动位置(图五)  private void init() ...{
Swing 中设置模态窗体和启动位置(图三)    if(modal)
Swing 中设置模态窗体和启动位置(图三)      frame.setEnabled(false);
Swing 中设置模态窗体和启动位置(图三)    this.addWindowListener(this);
Swing 中设置模态窗体和启动位置(图六)  }
Swing 中设置模态窗体和启动位置(图三)
Swing 中设置模态窗体和启动位置(图四)Swing 中设置模态窗体和启动位置(图五)  public void windowOpened(WindowEvent windowEvent) ...{
Swing 中设置模态窗体和启动位置(图六)  }
Swing 中设置模态窗体和启动位置(图三)
Swing 中设置模态窗体和启动位置(图四)Swing 中设置模态窗体和启动位置(图五)  public void windowClosing(WindowEvent windowEvent) ...{
Swing 中设置模态窗体和启动位置(图三)    if(modal)
Swing 中设置模态窗体和启动位置(图三)      frame.setEnabled(true);
Swing 中设置模态窗体和启动位置(图六)  }
Swing 中设置模态窗体和启动位置(图三)
Swing 中设置模态窗体和启动位置(图四)Swing 中设置模态窗体和启动位置(图五)  public void windowClosed(WindowEvent windowEvent) ...{
Swing 中设置模态窗体和启动位置(图六)  }
Swing 中设置模态窗体和启动位置(图三)
Swing 中设置模态窗体和启动位置(图四)Swing 中设置模态窗体和启动位置(图五)  public void windowIconified(WindowEvent windowEvent) ...{
Swing 中设置模态窗体和启动位置(图六)  }
Swing 中设置模态窗体和启动位置(图三)
Swing 中设置模态窗体和启动位置(图四)Swing 中设置模态窗体和启动位置(图五)  public void windowDeiconified(WindowEvent windowEvent) ...{
Swing 中设置模态窗体和启动位置(图六)  }
Swing 中设置模态窗体和启动位置(图三)
Swing 中设置模态窗体和启动位置(图四)Swing 中设置模态窗体和启动位置(图五)  public void windowActivated(WindowEvent windowEvent) ...{
Swing 中设置模态窗体和启动位置(图六)  }
Swing 中设置模态窗体和启动位置(图三)
Swing 中设置模态窗体和启动位置(图四)Swing 中设置模态窗体和启动位置(图五)  public void windowDeactivated(WindowEvent windowEvent) ...{
Swing 中设置模态窗体和启动位置(图三)    if(modal)
Swing 中设置模态窗体和启动位置(图三)      this.requestFocus();
Swing 中设置模态窗体和启动位置(图六)  }
Swing 中设置模态窗体和启动位置(图七)}
关于窗体启动位置

   有时候想要让窗体启动后在屏幕中间启动,有种比较复杂的方法:

Swing 中设置模态窗体和启动位置(图八)Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Swing 中设置模态窗体和启动位置(图八)Dimension size = frame.getSize();
Swing 中设置模态窗体和启动位置(图八)int x = (screenSize.width - size.width) / 2;
Swing 中设置模态窗体和启动位置(图八)int y = (screenSize.height - size.height) / 2;
Swing 中设置模态窗体和启动位置(图八)frame.setLocation( x, y );
   在 java 1.4 版之后可以用一条语句代替:

Swing 中设置模态窗体和启动位置(图八)frame.setLocationRelativeTo(null);


Tags:Swing 设置 模态

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接