hkbmwcn

          關(guān)于JInternalFrame去掉Title bar的問題

          自己實(shí)在是個(gè)懶人,blog難得更新一次,更新也是一些雞毛蒜皮的小東西。不過還是希望能對(duì)其他朋友或自己將來遇到類似問題能有個(gè)解答。最新在做一個(gè)swing項(xiàng)目,客戶要求能把JInternalFrame的Title bar去掉,同時(shí)還能加回來。由于網(wǎng)上搜一下沒有找到解決辦法,只能自己研究一下并改了下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();
                      }
               }


          }

          創(chuàng)建該InternalFrame對(duì)象后,通過showNorthPanel(), hideNorthPanel()來顯示或隱藏title bar,另外updateUI()重寫是因?yàn)榻缑姹粍?dòng)態(tài)改變lookandfeel時(shí),保證title bar上多的一小個(gè)bar出現(xiàn)。


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


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 平顶山市| 江永县| 保亭| 霍林郭勒市| 宁南县| 芜湖县| 西乡县| 佳木斯市| 平遥县| 德化县| 江油市| 河间市| 睢宁县| 东安县| 德阳市| 得荣县| 尼木县| 赫章县| 罗江县| 黔西县| 五河县| 河曲县| 柳河县| 宁夏| 盖州市| 江城| 公安县| 襄汾县| 赤水市| 逊克县| 班玛县| 廉江市| 伊金霍洛旗| 康马县| 朝阳县| 确山县| 大厂| 肥东县| 白河县| 河北区| 丹阳市|