迷你大刀(JFrame迷你化)

          半夜1點(diǎn)了 廢話不多說(shuō)

          效果圖:    雙擊以后

          思路其實(shí)很簡(jiǎn)單...代碼也很少..我也加了少量的注釋..看不懂的話..加QQ群..教你

          package MiniMizeHack;

          import java.awt.BorderLayout;
          import java.awt.Dimension;
          import java.awt.Point;
          import java.awt.event.ActionEvent;
          import java.awt.event.ActionListener;
          import java.awt.event.MouseEvent;
          import java.awt.event.MouseListener;

          import javax.swing.ImageIcon;
          import javax.swing.JFrame;
          import javax.swing.JLabel;
          import javax.swing.JMenu;
          import javax.swing.JMenuBar;
          import javax.swing.JMenuItem;
          import javax.swing.JPanel;
          import javax.swing.JPopupMenu;

          public class MiniMize implements MouseListener, ActionListener {

              
          public JFrame frame;
              
          public JPanel panel;
              
          public JPopupMenu popup;

              
          public JMenuBar menubar;
              
          public JLabel top;
              
          public JLabel bottom;

              
          public MiniMize( ) {
                  top 
          = new JLabel(new ImageIcon("Image/b3.gif"));
                  bottom 
          = new JLabel("More configuration here");

                  frame 
          = new JFrame("Mini Mize");
                  panel 
          = new JPanel( );
                  panel.setLayout(
          new BorderLayout( ));
                  panel.add(
          "North",top);
                  panel.addMouseListener(
          this);
                  frame.getContentPane().add(panel);
                  frame.addMouseListener(
          this);

                  menubar 
          = new JMenuBar( );
                  JMenu menu 
          = new JMenu("File");
                  menu.add(
          new JMenuItem("Open"));
                  menu.add(
          new JMenuItem("Quit"));
                  menubar.add(menu);

                  JMenu window 
          = new JMenu("Window");
                  JMenuItem mini 
          = new JMenuItem("Minimize");
            
          //      mini.addActionListener(this);
                  window.add(mini);
                  menubar.add(window);
                  frame.setJMenuBar(menubar);

                  popup 
          = new JPopupMenu( );
                  JMenuItem restore 
          = new JMenuItem("Restore");
            
          //      restore.addActionListener(this);
                  popup.add(restore);
              }


              
          public void mousePressed(MouseEvent e) {
                  maybeShowPopup(e);
              }


              
          public void mouseReleased(MouseEvent e) {
                  maybeShowPopup(e);
              }

              
          public void mouseExited(MouseEvent e) { }
              
          public void mouseEntered(MouseEvent e) { }
              
          public void mouseClicked(MouseEvent e) 
                  
          //=1 就是單擊  =2 就是雙擊
                  if(e.getClickCount()==1){
                      
                  }

                  
          if(e.getClickCount()==2){
                      
          //判斷bottom是否顯示(廢話);
                      if(bottom.isVisible()) {
                  
          //        方法調(diào)用
                            switchToMini();
                         }
           else {
                             switchToNormal();
                         }

                  }

              }

              
              
          private void maybeShowPopup(MouseEvent e) {
                  
                  
          if (e.isPopupTrigger()) {
                      popup.show(e.getComponent( ),
                                 e.getX(), e.getY());
                  }


              }

              
          public void actionPerformed(ActionEvent evt) {
                 
              }

              
          private Dimension normal_size;
              
              
          public void switchToMini( ) {
                  
                  Point location 
          = frame.getLocation( );
                  
          //這個(gè)獲得frame的Dimension給normal_size(
                  
          //我感覺(jué)這樣的變量名我不用解釋)一看就懂..(嘿嘿^v^);
                  normal_size = frame.getSize( );
                  frame.setVisible(
          false);
                  frame 
          = new JFrame( );
                  frame.setUndecorated(
          true);
                  frame.getContentPane( ).add(panel);
                  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                  bottom.hide( );
                  frame.setAlwaysOnTop(
          true);

                  
          // 顯示frame 最近越來(lái)越喜歡frame.pack();了
                  frame.pack( );
                  frame.setLocation(location);
                  frame.setVisible(
          true);

              }

              
          public void switchToNormal() {
                  
          //這方法的代碼 跟SwitchToMini大體一樣..自己應(yīng)該能理解
                  Point location = frame.getLocation( );
                  frame.setVisible(
          false);
                  frame 
          = new JFrame( );
                  frame.setUndecorated(
          false);
                  frame.getContentPane( ).add(panel);
                  
                  bottom.show();
                  frame.setJMenuBar(menubar);
                  frame.setAlwaysOnTop(
          false);

                  frame.pack();
                  frame.setSize(normal_size);
                  frame.setLocation(location);
                  frame.setVisible(
          true);
              }

              
          public static void main(String[] args) {
                  MiniMize mini 
          = new MiniMize( );
                  mini.frame.pack( );
                  mini.frame.setSize(
          300,300);
                  mini.frame.setVisible(
          true);
              }

          }


          posted on 2008-05-30 01:12 相信 閱讀(738) 評(píng)論(1)  編輯  收藏 所屬分類(lèi): Swing文章

          評(píng)論

          # re: 迷你大刀(JFrame迷你化) 2008-05-30 02:37 晴天

          // 顯示frame 最近越來(lái)越喜歡frame.pack();了

          我一般是寫(xiě)一個(gè)靜態(tài)類(lèi),然后傳幾個(gè)參數(shù)進(jìn)去,隨便弄個(gè)窗體出來(lái)的,代碼重用的.
          沒(méi)那么多時(shí)間每次寫(xiě)顯示Jframe那幾行代碼啊....還要玩游戲呢~~  回復(fù)  更多評(píng)論   

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導(dǎo)航

          統(tǒng)計(jì)

          公告

          不顯示applet

          常用鏈接

          留言簿(16)

          我參與的團(tuán)隊(duì)

          隨筆檔案

          文章分類(lèi)

          文章檔案

          新聞檔案

          相冊(cè)

          swingchina 專(zhuān)業(yè)搞Swing的網(wǎng)站

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 遵义市| 西华县| 永定县| 河西区| 都江堰市| 华坪县| 黑河市| 文山县| 额济纳旗| 扶风县| 大田县| 青阳县| 大埔县| 祥云县| 巴中市| 那坡县| 驻马店市| 临夏县| 于田县| 米脂县| 电白县| 溆浦县| 玉山县| 霍山县| 宜川县| 汝阳县| 健康| 海南省| 屏南县| 丰原市| 怀化市| 临汾市| 淮南市| 新竹县| 屏南县| 开封县| 龙州县| 师宗县| 股票| 额济纳旗| 郴州市|