hkbmwcn

          關于JInternalFrame去掉Title bar的問題

          自己實在是個懶人,blog難得更新一次,更新也是一些雞毛蒜皮的小東西。不過還是希望能對其他朋友或自己將來遇到類似問題能有個解答。最新在做一個swing項目,客戶要求能把JInternalFrame的Title bar去掉,同時還能加回來。由于網上搜一下沒有找到解決辦法,只能自己研究一下并改了下JInternalFrame,先記錄如下:


          import java.awt.BorderLayout;
          import java.awt.Dimension;
          import java.awt.Font;
          import java.awt.Rectangle;
          import java.awt.event.ComponentEvent;
          import java.awt.peer.ComponentPeer;
          import java.beans.PropertyVetoException;

          import javax.swing.ActionMap;
          import javax.swing.BorderFactory;
          import javax.swing.JComponent;
          import javax.swing.JDesktopPane;
          import javax.swing.JInternalFrame;
          import javax.swing.UIManager;
          import javax.swing.plaf.InternalFrameUI;
          import javax.swing.plaf.basic.BasicInternalFrameUI;

          public class MCOCInternalFrame extends JInternalFrame {
              
              //private String lookAndFeel = null;
              BasicInternalFrameUI orgUi = null;
              BasicInternalFrameUI newUi = null;
              JComponent northPanel = null;
              private boolean isHidden = false;

              
              public MCOCInternalFrame() {
                  super();

                  northPanel = ((javax.swing.plaf.basic.BasicInternalFrameUI) this.getUI()).getNorthPane();
                  orgUi = ((javax.swing.plaf.basic.BasicInternalFrameUI) this.getUI());
                  newUi = new BasicInternalFrameUI(this);        
              }
              
              
              public void showNorthPanel() {

                  
                  this.setUI(orgUi);
                  this.putClientProperty("JInternalFrame.isPalette", Boolean.FALSE);
                  isHidden = false;

              }
              
              public void hideNorthPanel() {
                  this.setUI(newUi);
                  ((javax.swing.plaf.basic.BasicInternalFrameUI) this.getUI()).setNorthPane(null);
                  this.putClientProperty("JInternalFrame.isPalette", Boolean.TRUE);
                  isHidden = true;
                  
              }
              
               public void updateUI() {
                  
                      super.updateUI();
                      if (isHidden) {
                          hideNorthPanel();
                      }
               }


          }

          創建該InternalFrame對象后,通過showNorthPanel(), hideNorthPanel()來顯示或隱藏title bar,另外updateUI()重寫是因為界面被動態改變lookandfeel時,保證title bar上多的一小個bar出現。


          posted on 2008-01-18 22:02 亙古頑石 閱讀(637) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 宁陵县| 伊宁县| 海伦市| 云龙县| 深水埗区| 普格县| 靖安县| 白水县| 厦门市| 普宁市| 西乌| 沭阳县| 怀化市| 延长县| 竹北市| 郴州市| 板桥市| 耿马| 晋州市| 辛集市| 庆阳市| 天水市| 张北县| 布尔津县| 平定县| 阳泉市| 礼泉县| 资中县| 全南县| 哈巴河县| 循化| 登封市| 长阳| 钟山县| 武清区| 德清县| 济宁市| 芦山县| 庆城县| 乌鲁木齐县| 蓝山县|