kooyee ‘s blog

          開源軟件, 眾人努力的結(jié)晶, 全人類的共同財(cái)富
          posts - 103, comments - 55, trackbacks - 0, articles - 66
             :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          Swing關(guān)閉和打開frame

          Posted on 2008-02-23 23:30 kooyee 閱讀(1723) 評(píng)論(1)  編輯  收藏 所屬分類: Swing/Applet
          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之前必須先把舊的移出父容器, 解除和原來(lái)父容器的聯(lián)系. 否則會(huì)導(dǎo)致
          illegal component position. ( 由于覆蓋了原先添加的位置,雖然是同一個(gè)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等去關(guān)閉frame,要用
          JInternalFrame parent = (JInternalFrame)this.getRootPane().getParent();//得到frame
                  parent.dispose();

          先得到子控件的頂窗格,rootPane的parent才是上層的frame控件。 如果直接用this.getParent()得到的只是包含這個(gè)控件的容器(JPanel等)。



          3。

          通過(guò)Matisse在一個(gè)class中添加多個(gè)frames, eclipse中在design view狀態(tài)下右鍵outline 中Other Components去添加其他控件,包括internal frame。



          4。

          frame

          isClosed() 驗(yàn)證是否關(guān)閉,沒(méi)建立frame實(shí)例是,return false。 當(dāng)建立實(shí)例后,frame顯示則return false,frame dispose后return true

          isShowing() 驗(yàn)證是否顯示,不再desktop或其他container中顯示,這return false。

          激活active a frame 使用:
          setSelected(true)







          評(píng)論

          # re: Swing關(guān)閉和打開frame  回復(fù)  更多評(píng)論   

          2008-07-18 10:23 by 游客
          謝謝`` 找了很多,就這個(gè)派上用場(chǎng) 幫我解決問(wèn)題咯!
          主站蜘蛛池模板: 泰州市| 普定县| 大厂| 祁东县| 高密市| 灌云县| 耒阳市| 潮州市| 芷江| 且末县| 裕民县| 溆浦县| 德清县| 惠安县| 介休市| 怀来县| 临潭县| 泸溪县| 宽城| 通化县| 昌黎县| 綦江县| 青浦区| 陇川县| 邢台市| 南安市| 正阳县| 习水县| 保德县| 日喀则市| 环江| 石景山区| 自治县| 清水县| 裕民县| 麻江县| 泸州市| 定结县| 甘洛县| 新化县| 伊金霍洛旗|