1。
close frame
frame.dispose();//not fire INTERNAL_FRAME_CLOSING event, but fire INTERNAL_FRAME_CLOSED event

frame.setClosed(true);//fire INTERNAL_FRAME_CLOSING event and INTERNAL_FRAME_CLOSED event
open frame
jDesktopPane.remove(frame);
jDesktopPane.add(frame);
frame.show();
在添加frame之前必須先把舊的移出父容器, 解除和原來父容器的聯系. 否則會導致
illegal component position. ( 由于覆蓋了原先添加的位置,雖然是同一個object).
//if frame not exist or closed
if (frame == null||frame.isClosed()) {
frame = new Frame();
jDesktopPane.remove(frame);
jDesktopPane.add(frame);
frame.setVisible(true);
}
//if not create new frame object use following
//if (!frame.isShowing()){
// jDesktopPane.remove(frame);
// jDesktopPane.add(frame);
// frame.setVisible(true);
//}

//to active the frame
try {
frame.setSelected(true);
} catch (Exception e) {
e.printStackTrace();
}
2。
如果從frame的子容器中的button等去關閉frame,要用
JInternalFrame parent = (JInternalFrame)this.getRootPane().getParent();//得到frame
parent.dispose();
先得到子控件的頂窗格,rootPane的parent才是上層的frame控件。 如果直接用this.getParent()得到的只是包含這個控件的容器(JPanel等)。
3。
通過Matisse在一個class中添加多個frames, eclipse中在design view狀態下右鍵outline 中Other Components去添加其他控件,包括internal frame。
4。
frame
isClosed() 驗證是否關閉,沒建立frame實例是,return false。 當建立實例后,frame顯示則return false,frame dispose后return true
isShowing() 驗證是否顯示,不再desktop或其他container中顯示,這return false。
激活active a frame 使用:
setSelected(true)
close frame




open frame



在添加frame之前必須先把舊的移出父容器, 解除和原來父容器的聯系. 否則會導致
illegal component position. ( 由于覆蓋了原先添加的位置,雖然是同一個object).





















2。
如果從frame的子容器中的button等去關閉frame,要用


先得到子控件的頂窗格,rootPane的parent才是上層的frame控件。 如果直接用this.getParent()得到的只是包含這個控件的容器(JPanel等)。
3。
通過Matisse在一個class中添加多個frames, eclipse中在design view狀態下右鍵outline 中Other Components去添加其他控件,包括internal frame。
4。
frame
isClosed() 驗證是否關閉,沒建立frame實例是,return false。 當建立實例后,frame顯示則return false,frame dispose后return true
isShowing() 驗證是否顯示,不再desktop或其他container中顯示,這return false。
激活active a frame 使用:
setSelected(true)