亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? java布局管理器深入討論.txt

?? 499篇java文章
?? TXT
字號:
作者:五一
日期:2001-6-9 13:30:12
Java布局管理器深入討論
5/23/2001 16:59:54· 劉之佑·yesky

--------------------------------------------------------------------------------

  我們都知道,java的GUI界面定義是由awt類和swing類來完成的。它在布局管理上面采用了容器和布局管理分離的方案。也就是說,容器只管將其他小件放入其中,而不管這些小件是如何放置的。對于布局的管理交給專門的布局管理器類(LayoutManager)來完成。

  其實,java在GUI方面應該是并不成功的。Awt類和swing類的結構非常復雜,加上充斥其間的子類繼承和接口實現,使得要想掌握這兩個類非常困難。這也是很多的java程序員抱怨的事情,但GUI已經成了程序發展的方向,所以這里我們也得勉為其難了。

  現在我們來看java中布局管理器的具體實現。我們前面說過,java中的容器類(Container),它們只管加入小件(Meta),也就是說,它只使用自己的add()方法向自己內部加入小件。同時他記錄這些加入其內部的小件的個數,可以通過container.getComponentCount()方法類獲得小件的數目,通過container.getComponent(i)來獲得相應小件的句柄。然后LayoutManager類就可以通過這些信息來實際布局其中的小件了。

  java已經為我們提供了幾個常用的布局管理器類,例如:BorderLayout、FlowLayout、GridBagLayout等等。但在實際的布局上,我們還是會有其他的需要。我在不久前的一個問題中曾經要一個垂直的流式布局,我稱之為VflowLayout,其實BoxLayout和GridBagLayout可以完成類似的工作,但前者是swing類的成員,我的客戶端是一個applet,不能使用,而后者必須在類生成的時候指定列數,而失去了靈活性,所以我決定重寫一個自己的布局管理器來實現。經過分析,所有的LayoutManager都要實現一個接口,就是LayoutManager Inerface或者是他的一個子接口LayoutManager2 Interface,后者用于復雜的布局管理,例如GridCardLayout。LayoutManager有五個方法需要實現,分別是:

  1、public void addLayoutComponent(String name, Component comp);

  2、public void removeLayoutComponent(Component comp);

  3、public Dimension preferredLayoutSize(Container container);

  4、public Dimension minimumLayoutSize(Container container);

  5、public void layoutContainer(Container container);

  第一個方法其實就是你在使用container.add(String name,component comp);時調用的方法,例如BorderLayout為布局管理器時。但在FlowLayout中由于沒有其他的附加信息,所以不需要填充這個方法。相應的第二個方法也就不需要填充了。真正核心的方法是第三個和第五個方法,前者是最終確定Container有多大的,而后者就是決定Container中各個小件的實際位置的了。也就是說,當我們用container.setLayout(LayoutManager)后,再加入小件后,最后系統做的工作其實是LayoutManager. layoutContainer(container);和container.setSize(LayoutManager. PreferredLayoutSize(container));。

  下面是我的新類:VflowLayout。 
  package render_account;

  import java.awt.*;
  import java.io.*;

  public class VFlowLayout implements LayoutManager,Serializable{

   int hgap;
   int vgap;

   public VFlowLayout(){
    this(5,5);
   }

   public VFlowLayout(int i,int j){
    this.hgap=i;
    this.vgap=j;
   }

   public void addLayoutComponent(String name, Component comp){

   }

   public void removeLayoutComponent(Component comp){

    }

   public Dimension preferredLayoutSize(Container container){
    synchronized(container.getTreeLock()){
    Dimension dimension1=new Dimension(0,0);
    int i=container.getComponentCount();
    for(int j=0;j       Component component = container.getComponent(j);
      if(component.isVisible()){
        Dimension dimension2=component.getPreferredSize();
        dimension1.width=Math.max(dimension1.width,dimension2.width);
        if(j>0)
         dimension1.height+=vgap;
         dimension1.height+=dimension2.height;
        }
      }
      Insets insets=container.getInsets();
      dimension1.height+=insets.top+insets.bottom+vgap*2;
      dimension1.width+=insets.left+insets.right+hgap*2;
      Dimension dimension=dimension1;
      return dimension;
      file://return(new Dimension(50,200));
     }
    }

    public Dimension minimumLayoutSize(Container container){
     synchronized(container.getTreeLock()){
     Dimension dimension1=new Dimension(0,0);
     int i=container.getComponentCount();
     for(int j=0;j      Component component = container.getComponent(j);
     if(component.isVisible()){
      Dimension dimension2=component.getMinimumSize();
      dimension1.width=Math.max(dimension1.width,dimension2.width);
      if(j>0)
       dimension1.height+=vgap;
       dimension1.height+=dimension2.height;
      }
     }
     Insets insets=container.getInsets();
     dimension1.height+=insets.top+insets.bottom+vgap*2;
     dimension1.width+=insets.left+insets.right+hgap*2;
     Dimension dimension=dimension1;
     return dimension;
    }
   }

   public void layoutContainer(Container container){
    synchronized(container.getTreeLock()){
    Insets insets=container.getInsets();
    int vSpace=container.getSize().height-(insets.top+insets.bottom+vgap*2);
    int componentCount=container.getComponentCount();
    int left=insets.left+hgap;
    int totalHeight=0;
    int width=0;
    int componentStart=0;
    for(int i=0;i      Component component=container.getComponent(i);
     if(component.isVisible()){
      Dimension dimension=component.getPreferredSize();
      component.setSize(dimension.width,dimension.height);
      if(totalHeight==0 || totalHeight+dimension.height<=vSpace){
       if(totalHeight>0)
        totalHeight+=vgap;
        totalHeight+=dimension.height;
        width=Math.max(width,dimension.width);
       }else{
        moveComponents(container,insets.top+vgap,left,width,componentStart,i);
        totalHeight=0;
        left+=hgap+width;
        width=dimension.width;
        componentStart=i;
       }
      }
     }
     moveComponents(container,insets.top+vgap,left,width,componentStart,componentCount);
    }
   }

   private void moveComponents(Container container,int top,int left,int width,int          componentStart,int componentEnd){
     synchronized(container.getTreeLock()){
      for(int i=componentStart;i        Component component=container.getComponent(i);
       if(component.isVisible()){
        component.setLocation(left,top);
        top+=component.getPreferredSize().height+vgap;
       }
      }
     }
    }

    public void setHgap(int i){
      this.hgap=i;
    }

    public void setVgap(int i){
      this.vgap=i;
    }

    public int getHgap(){
     return(this.hgap);
    }

    public int getVgap(){
     return(this.vgap);
    }
   }

  大家可以試一下。

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧亚一区二区三区| 99精品视频一区二区三区| 激情综合网天天干| 国产精品国产自产拍高清av| 91精品国产一区二区| 成人免费高清视频| 另类成人小视频在线| 一区二区三区国产精品| 国产麻豆9l精品三级站| 欧美三级乱人伦电影| 国产精品萝li| caoporen国产精品视频| 久久婷婷久久一区二区三区| 麻豆精品一区二区三区| 亚洲激情五月婷婷| 国产综合成人久久大片91| 《视频一区视频二区| 成人激情午夜影院| 蜜桃av一区二区三区| 亚洲精品视频自拍| 亚洲国产激情av| 欧美精品一区在线观看| 在线电影国产精品| 欧美撒尿777hd撒尿| 色www精品视频在线观看| 国产99久久久久| 国产在线视频一区二区| 日韩av高清在线观看| 亚洲午夜在线视频| 亚洲色大成网站www久久九九| 国产欧美视频一区二区| 久久久精品日韩欧美| 久久色中文字幕| 精品精品国产高清一毛片一天堂| 91精品国产欧美一区二区成人| 欧美三级乱人伦电影| 欧美午夜视频网站| 欧美乱妇15p| 欧美另类一区二区三区| 最近日韩中文字幕| 日本一区二区在线不卡| 欧美激情在线观看视频免费| 亚洲激情在线播放| 欧美大片日本大片免费观看| 成人av免费在线| 麻豆精品在线播放| 午夜不卡在线视频| 日韩av网站免费在线| 黑人巨大精品欧美黑白配亚洲| 7777精品伊人久久久大香线蕉经典版下载 | 偷窥国产亚洲免费视频| 精品亚洲欧美一区| 91片黄在线观看| 91在线观看视频| 天天操天天色综合| 亚洲欧美另类图片小说| 91精品国产欧美一区二区| av在线一区二区| 亚洲成年人网站在线观看| 亚洲一区二区欧美| 国产乱一区二区| 免费观看久久久4p| 大胆欧美人体老妇| 制服视频三区第一页精品| 日本成人在线电影网| 国产精品18久久久久久vr| 成人h动漫精品一区二区| 欧美日韩一区二区在线视频| 在线国产电影不卡| 欧美美女一区二区| 精品国产亚洲一区二区三区在线观看| 精品国产免费一区二区三区四区 | 国产99精品在线观看| 国产高清久久久久| 成人h动漫精品| av成人动漫在线观看| 国产精品色噜噜| 午夜a成v人精品| 粉嫩av一区二区三区在线播放| 国产一区二区三区国产| 91香蕉视频在线| 在线一区二区三区四区| 欧美日韩精品欧美日韩精品一| 欧美午夜精品免费| 成人性生交大合| wwwwxxxxx欧美| 欧美三级电影一区| 国产欧美日韩精品一区| 在线综合亚洲欧美在线视频| 欧美三级资源在线| 国产乱子轮精品视频| 67194成人在线观看| 亚洲最大色网站| 99久精品国产| 亚洲欧美欧美一区二区三区| 日本亚洲免费观看| 91蝌蚪porny成人天涯| 日韩精品一区二区三区视频播放 | 高清视频一区二区| 欧美日韩dvd在线观看| 国产欧美日韩另类一区| 美女视频免费一区| 在线免费精品视频| 久久精品视频网| 日韩黄色在线观看| 在线精品视频免费观看| 国产精品欧美久久久久无广告 | 久热成人在线视频| 欧美亚洲国产一区在线观看网站| 国产欧美日韩三级| 国产一区二区免费视频| 日本道色综合久久| 国产精品中文字幕一区二区三区| 久久中文娱乐网| 精品一区二区三区影院在线午夜| k8久久久一区二区三区| 婷婷综合久久一区二区三区| 久久夜色精品国产欧美乱极品| 欧美激情在线看| 欧美精品 国产精品| 欧美中文一区二区三区| 99re热这里只有精品免费视频| 国产大片一区二区| 国内精品在线播放| 亚洲自拍偷拍综合| 亚洲一区二区av在线| 亚洲蜜臀av乱码久久精品| 亚洲精品一卡二卡| 一区二区三区蜜桃| 色综合欧美在线视频区| 成人激情av网| 欧美性淫爽ww久久久久无| 欧美一a一片一级一片| 91精品国产91综合久久蜜臀| 在线综合+亚洲+欧美中文字幕| 欧美精品九九99久久| 精品欧美一区二区在线观看| 久久久国际精品| 中文字幕一区二区三区视频| 亚洲欧洲三级电影| 亚洲黄色av一区| 久久久久亚洲蜜桃| 2014亚洲片线观看视频免费| 色综合天天做天天爱| 92精品国产成人观看免费| 成人久久视频在线观看| jizzjizzjizz欧美| 白白色亚洲国产精品| aaa欧美色吧激情视频| 国产91精品免费| 成人av小说网| 久久久久久久久久美女| 6080午夜不卡| 日韩一区二区免费高清| 国产亚洲人成网站| 久久久久久夜精品精品免费| 777欧美精品| 在线播放一区二区三区| 色欧美88888久久久久久影院| 国内精品自线一区二区三区视频| 亚洲mv在线观看| 亚洲蜜臀av乱码久久精品| 亚洲在线免费播放| 国产精品色婷婷| 亚洲国产精品传媒在线观看| 一区二区三区四区中文字幕| 午夜精品久久久久久久| 国产一区二区在线看| 91色乱码一区二区三区| 欧美一区二区在线免费观看| 26uuu久久综合| 午夜日韩在线电影| 成人美女视频在线观看| 7777女厕盗摄久久久| 亚洲免费电影在线| 精品亚洲aⅴ乱码一区二区三区| 99久久er热在这里只有精品15| 欧美一区二区黄| 亚洲免费av观看| av不卡在线观看| 国产欧美日韩一区二区三区在线观看| 亚洲mv大片欧洲mv大片精品| 韩国成人精品a∨在线观看| 99国产精品国产精品久久| 日韩免费视频一区| 日韩二区三区四区| 91黄视频在线| 国产精品久久三区| 韩国理伦片一区二区三区在线播放| 欧美日韩一区二区三区不卡| 久久亚洲春色中文字幕久久久| 日本va欧美va瓶| 91丨九色丨蝌蚪丨老版| 久久亚洲二区三区| 国产一区二区不卡| 日韩午夜在线影院| 韩国v欧美v亚洲v日本v| 久久免费电影网| 国产电影精品久久禁18| 国产欧美日韩亚州综合|