關於 Modal 窗體
在 Swing 中只有 JDialog 可以設置為 Modal 窗體其方法可以在構造函數(例如JDialog(Frame owner boolean modal))中傳參數也可以用 setModal(boolean b) 方法設定這個方法是從 Dialog 類繼承的
在 JFrame 類中無法通過如 JDialog 的方法設置 Modal 窗體在 CSDN 有朋友嘗試通過在 windowDeiconified() 時 requestFocus() 來模擬 Modal 窗體代碼如下


public class MyModalFrame extends JFrame implements WindowListener
{

private JFrame frame = null;

private boolean modal = false;

private String title = null;



public MyModalFrame()
{

this(null
false);

}



public MyModalFrame(JFrame frame)
{

this(frame
false);

}



public MyModalFrame(JFrame frame
boolean modal)
{

this(frame
modal
);

}



public MyModalFrame(JFrame frame
boolean modal
String title)
{

super(title);

this
frame = frame;

this
modal = modal;

this
title = title;

this
init();

}



private void init()
{

if(modal)

frame
setEnabled(false);

this
addWindowListener(this);

}



public void windowOpened(WindowEvent windowEvent)
{

}



public void windowClosing(WindowEvent windowEvent)
{

if(modal)

frame
setEnabled(true);

}



public void windowClosed(WindowEvent windowEvent)
{

}



public void windowIconified(WindowEvent windowEvent)
{

}



public void windowDeiconified(WindowEvent windowEvent)
{

}



public void windowActivated(WindowEvent windowEvent)
{

}



public void windowDeactivated(WindowEvent windowEvent)
{

if(modal)

this
requestFocus();

}

}
關於窗體啟動位置
有時候想要讓窗體啟動後在屏幕中間啟動
有種比較復雜的方法

Dimension screenSize = Toolkit
getDefaultToolkit()
getScreenSize();

Dimension size = frame
getSize();

int x = (screenSize
width
size
width) /
;

int y = (screenSize
height
size
height) /
;

frame
setLocation( x
y );
在 Java
版之後可以用一條語句代替

frame
setLocationRelativeTo(null);
Java API 文檔中對此方法描述如下public void setLocationRelativeTo(Component c)
設置此窗口相對於指定組件的位置如果此組件當前未顯示或者 c 為 null則此窗口位於屏幕的中央如果該組件的底部在視線以外則將該窗口放置在 Component 最接近窗口中心的一側因此如果 Component 在屏幕的右部則 Window 將被放置在左部反之亦然
在應用此方法時應該注意的一點是setSize() 方法一定要放在 setLocationRelativeTo() 之前否則只有窗體左上角是正對屏幕或所屬組件中心整個窗體看起來會是偏向右下角的
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26857.html