<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Java究竟怎么玩?

      天地程序已定棋,人間大數待變局

        博客園  :: 首頁  :: 新隨筆  :: 聯系 :: 訂閱 訂閱  :: 管理
        我們都知道,MDI(Multiple Document Interface)即多文檔界面。使用MDI窗體時,將在一個父窗體內建立工作區,父窗體能夠令一個以上的子窗體限制于其中活動及操作。在office系列及VS/VS.Net等很多軟件中都使用了MDI的表現形式。
         而遺憾的是,雖然很多編程語言都提供了顯著的MDI屬性,但Java卻算是個例外,基本上只能通過JDesktopPane結合JInternalFrame進行實現,而且局限性也比較多。
        其實,利用Swing完成MDI,還有更簡單的捷徑可循。
        下面,我給出一個簡單的例子:
       
      package org.loon.test;
      /**
       * <p>Title: LoonFramework</p>
       * <p>Description:</p>
       * <p>Copyright: Copyright (c) 2007</p>
       * <p>Company: LoonFramework</p>
       * 
      @author chenpeng  
       * @email:ceponline@yahoo.com.cn 
       * 
      @version 0.1
       
      */

      import javax.imageio.ImageIO;
      import javax.swing.BorderFactory;
      import javax.swing.JFrame;
      import javax.swing.JLabel;
      import javax.swing.JLayeredPane;
      import javax.swing.JPanel;
      import javax.swing.JTextArea;
      import javax.swing.SwingConstants;
      import javax.swing.WindowConstants;
      import javax.swing.border.Border;

      import java.awt.BorderLayout;
      import java.awt.Color;
      import java.awt.Dimension;
      import java.awt.EventQueue;
      import java.awt.Font;
      import java.awt.Graphics;
      import java.awt.Image;
      import java.awt.Insets;
      import java.awt.Point;
      import java.awt.event.MouseEvent;
      import java.awt.event.MouseListener;
      import java.awt.event.MouseMotionListener;
      import java.io.IOException;



      public class JavaMDI extends JPanel {
          
      /**
           * 
           
      */

          
      private static final long serialVersionUID = 1L;


          
      private static final int BACKLAYER = 1;

          
          Font FONT 
      = new Font("宋體", Font.PLAIN, 12);

          
      private final BackImagePane layerPane;
          
      //子窗體背景色
          private int[] colors = 0xdddddd0xaaaaff0xffaaaa0xaaffaa0xffffaa0xffaaff0xaaffff , 0xddddff};
        
          
      private Color getColor(int i, float f) {
              
      int b = (int)((i & 0xff* f);
              i 
      = i >> 8;
              
      int g = (int)((i & 0xff* f);
              i 
      = i >> 8;
              
      int r = (int)((i & 0xff* f);
              
      return new Color(r,g,b);
          }


          
      public JavaMDI() {
              
      super(new BorderLayout());
              
              Image image;
              
      try {
                  image 
      = ImageIO.read(getClass().getResource("javamdi.jpg"));
              }
       catch (IOException e) {
                  image
      =null;
              }

              layerPane 
      = new BackImagePane();
              layerPane.setImage(image);

              
      //隨機生成個子面板,作為內部窗體,實際使用時替換JPanel內部容器即可。
              for (int i=0; i<colors.length; i++{
                  JPanel p 
      = createChildPanel(i);
                  p.setLocation(i
      *80 + 20, i*50 + 15);
                  layerPane.add(p, BACKLAYER);
              }

              add(layerPane, BorderLayout.CENTER);
              
          }



          
      /**
           * 創建子面板,作為在內部移動的窗體
           * 
      @param i
           * 
      @return
           
      */

          
      private JPanel createChildPanel(int i) {
              
      //使用html標記設定顏色
              String html = "<html><font color=#333333> 子窗體ID "+ i +"</font></html>";
              JLabel label 
      = new JLabel(html);
              label.setFont(FONT);
              label.setOpaque(
      true);
              label.setHorizontalAlignment(SwingConstants.CENTER);
              
      //設定背景色
              label.setBackground(getColor(colors[i], 0.85f));
              
      //設定邊距
              Border border1 = BorderFactory.createEmptyBorder(4444);;
              label.setBorder(border1);

              JTextArea text 
      = new JTextArea();
              text.setBackground( 
      new Color(colors[i]));
              text.setMargin(
      new Insets(4,4,4,4));
              text.setLineWrap(
      true);

              JPanel p 
      = new JPanel();

              Color col 
      = getColor(colors[i], 0.5f);
              Border border 
      = BorderFactory.createLineBorder(col, 1);
              p.setBorder(border);

              
      //移動監聽
              DragMouseListener  li = new DragMouseListener(p);
              p.addMouseListener(li);
              p.addMouseMotionListener(li);

              p.setLayout( 
      new BorderLayout());
              p.add(label, BorderLayout.NORTH);
              p.add(text, BorderLayout.CENTER);
              
      //子窗體大小
              p.setSize( new Dimension(200150));
              
      return p;
          }



          
      /**
           * 子窗體拖拽監聽
           * 
      @author chenpeng
           *
           
      */

          
      class DragMouseListener implements MouseListener, MouseMotionListener {
              Point origin;
              JPanel panel;

              DragMouseListener(JPanel p) 
      {
                  panel 
      = p;
              }

              
      public void mousePressed(MouseEvent e) {
                  origin 
      = new Point( e.getX(), e.getY());
                  
      //移動
                  layerPane.moveToFront(panel);
              }

              
      public void mouseDragged(MouseEvent e) {
                  
      if (origin == nullreturn;
                  
      int dx = e.getX() - origin.x;
                  
      int dy = e.getY() - origin.y;
                  Point p 
      = panel.getLocation();
                  panel.setLocation( p.x 
      + dx, p.y + dy);
              }


              
      public void mouseClicked(MouseEvent e) {}
              
      public void mouseEntered(MouseEvent e) {}
              
      public void mouseExited(MouseEvent e) {}
              
      public void mouseReleased(MouseEvent e) {}
              
      public void mouseMoved(MouseEvent e) {}
          }


          
      //用分層面板JLayeredPane制作MDI背景
          class BackImagePane extends JLayeredPane {
              
      /**
               * 
               
      */

              
      private static final long serialVersionUID = 1L;

              
      public BackImagePane() {
                  
      super();
              }


              
      void setImage(Image img) {
                  bgImage 
      = img;
              }

              
      private Image bgImage;

              
      public void paint(Graphics g) {
                  
      if (bgImage != null{
                      
      int imageh = bgImage.getHeight(null);
                      
      int imagew = bgImage.getWidth(null);
                      Dimension d 
      = getSize();
                      
      for(int h=0; h<d.getHeight(); h += imageh) {
                          
      for(int w=0; w<d.getWidth(); w += imagew) {
                              g.drawImage(bgImage, w, h, 
      this);
                          }

                      }

                  }

                  
      super.paint(g);
              }

          }


          
      public static void main(String[] args) {
              EventQueue.invokeLater(
      new Runnable() {
                  
      public void run() {
                      createGUI();
                  }

              }
      );
          }

          
      public static void createGUI() {
              
      final JFrame frame = new JFrame("JAVA實現可設置背景的MDI窗口");
              frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
              frame.setSize(
      new Dimension(800600));
              frame.getContentPane().add(
      new JavaMDI());
              frame.setAlwaysOnTop(
      true);
              frame.setLocationRelativeTo(
      null);
              frame.setVisible(
      true);
          }

      }




      效果圖如下:

      posted on 2007-12-26 16:47  cping  閱讀(530)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 欧美丰满熟妇乱XXXXX网站| 国产成人AV一区二区三区无码| 性XXXX视频播放免费直播| 777米奇色狠狠俺去啦| 精品久久久久久无码人妻蜜桃| 亚洲精品区午夜亚洲精品区| 加勒比无码人妻东京热| 91无码人妻精品一区| 国产乱对白刺激视频| 欧美一区二区三区性视频| 国产亚洲欧洲av综合一区二区三区| 精品国产乱码久久久久久口爆网站 | 国产中文三级全黄| 好看的国产精品自拍视频| 毛片一区二区在线看| 伊金霍洛旗| 97精品人妻系列无码人妻| 日本高清免费不卡视频| 国产一区二区三区av在线无码观看| 欧美成人黄在线观看| 视频一区视频二区视频三| 中文字幕亚洲人妻系列| 欧美猛少妇色xxxxx猛叫| 国产欧美精品一区二区三区-老狼 真实单亲乱l仑对白视频 | 亚洲综合在线日韩av| 国产免费网站看v片元遮挡| 国产白袜脚足j棉袜在线观看| 临泉县| 国产精品国语对白一区二区| 久久精品娱乐亚洲领先| 欧美国产日韩久久mv| 亚洲国产精品高清线久久| 久久99国产一区二区三区| 国产日产欧产美韩系列麻豆| 亚洲国产午夜精品福利| 亚洲人成网站在线播放动漫| 欧美拍拍视频免费大全| 午夜av高清在线观看| 亚洲成在人天堂一区二区| 国产一区二区三区怡红院| 亚洲中文字幕av天堂|