操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    這篇博文筆者介紹一下java組件中,常用的布局管理器。java組件中的布局方式有好幾十種,所有的這些布局管理器都實現了java.awt.接口。接下來筆者介紹一下常用的5種布局管理器,、、、、、。如果不希望使用布局管理器,可以調用組件的(null); ,但是不建議設置為null,因為這樣就失去了跨平臺特性,和java的設計理念相違背。

    1.

    流式布局管理器,組件像水流一樣向某方向流動(排列),遇到障礙(邊界)就折回,重頭開始排列。在默認情況下,布局管理器從左向右排列所有組件,遇到邊界就會折回下一行重新開始。

    在電腦上輸入一篇文章時,所使用的就是布局管理器,所有的文字默認從左向右排列,遇到邊界就會折回下一行重新開始。AWT中的布局管理器于此完全類似,只是此時排列的是AWT組件,而不是文字。

    組件默認使用的就是。

    組件中有三個靜態常量,分別為.LEFT、.、.RIGHT,分別表明中組件的排列方向為從左向右排列、從中間向兩邊排列、從右邊向左邊排列。

    JFrame f=new JFrame("測試窗口");
            //JFrame容器默認使用BorderLayout布局管理器
            //設置JFrame容器使用FlowLayout布局管理器,從左向右排列,水平間距為20,垂直間距為5
            f.setLayout(new FlowLayout(FlowLayout.LEFT,20,5));
            for(int i=0;i<10;i++){
                f.add(new JButton("按鈕"+i));
            }
            f.pack();
            f.setVisible(true);

    2.

    將組件分為EAST、SOUTH、WEST、NORTH、 五個區域,普通組件可以被放置在這五個區域中的任何一個。

    當改變的容器大小時,NORTH、SOUTH和區域水平調整,而EAST、WEST和區域垂直調整。

    常見的組件,,默認使用的就是,使用需要注意如下兩點:

    1.當向使用布局管理器的容器中添加組件時,需要指定要添加到那個區域中。如果沒有指定添加到那個區域中,則默認添加到中間區域。

    2.如果向某個區域添加多個組件的話,后放入的組件會覆蓋先放入的組件,在實際情況中,可以放入一個組件,然后再在組件中放入其它組件。

    JFrame f=new JFrame("測試窗口");
            //設置為BorderLayout,水平間距30,垂直間距為5
            f.setLayout(new BorderLayout(30,5));
            f.add(new JButton("WEST"),BorderLayout.WEST);
            f.add(new JButton("EAST"),BorderLayout.EAST);
            f.add(new JButton("NORTH"),BorderLayout.NORTH);
            f.add(new JButton("SOUTH"),BorderLayout.SOUTH);
            f.add(new JButton("CENTER"),BorderLayout.CENTER);
            //f.add(new JButton("CENTER"));
            
            f.pack();
            f.setVisible(true);

    3.

    網格布局管理器,該布局管理器將容器分割成縱橫線分隔的網格,每個網格所占的區域大小相同。當向使用布局管理器的容器中添加組件時,默認從左向右、從上往下依次添加到每個網格中。

    JFrame f=new JFrame("窗口測試");
            f.setLayout(new BorderLayout());
            
            JPanel p1=new JPanel();
            p1.add(new JTextField(30));
            f.add(p1,BorderLayout.NORTH);
            
    

    java swing布局管理器_java布局管理器主要包括_后勤管理主要管理什么

    JPanel p2
    =new JPanel(); //設計JPanel使用GridLayout布局管理器,3行,5列,水平間距和垂直間距都為4 p2.setLayout(new GridLayout(3,5,4,4)); String[] names={"0","1","2","3","4", "5","6","7","8","9", "+","-","*","/","="}; //往JPanel中添加15個按鈕 for(int i=0;i<15;i++){ p2.add(new JButton(names[i])); } f.add(p2); f.pack(); f.setVisible(true);

    4.

    布局管理器功能最強大,但也最復雜,與不同的是,在布局管理器中,一個組件可以跨域一個或多個網格,并可以設置各網格的大小各不相同,從而增加了布局的靈活性。為了處理中GUI組件的大小,跨域形,Java提供了對象,該對象與特定的GUI組件關聯,用于控制GUI組件的大小、跨越性。

    下面是使用布局管理器的步驟:

    1.創建布局管理器,并且指定GUI容器使用該布局管理器

    GridBagLayout gb=new GridBagLayout();
            container.setLayout(gb);

    2.創建對象,并且設置該對象的相關屬性(用于設置該受該對象控制的GUI組件的大小、跨域形等)

    gbc.gridx=2;//設置受該對象控制的GUI組件位于網格的橫向索引
            gbc.gridy=1;//設置受該對象控制的GUI組件位于網格的縱向索引
            gbc.gridwidth=2;//設置受該對象控制的GUI組件橫向跨域多少格
            gbc.gridheight=1;//設置受該對象控制的GUI組件縱向跨域多少格

    3.調用對象的方法來建立對象和受控制組件之間的關系

    gb.setConstraints(c,gbc);//設置組件c受gbc對象控制

    4.添加組件,與采用普通布局管理器添加組件的方法完全一樣

    container.add(c);

    因此使用的關鍵在于,它才是精確控制每個GUI組件的核心類,類有幾個屬性:

    1.gridX、gridY 設置受該對象控制的GUI組件左上角所在網格的橫向索引和縱向索引(左上角網格的索引為0、0)。這兩個值還可以是.(默認值),它表明當前組件緊跟在上一個組件之后。

    2.、 設置受該對象控制的GUI組件橫向、縱向可以跨域多少個網格,兩個屬性值的默認值都是1。如果設置這兩個屬性值為.,表明受該對象控制的GUI組件是橫向、縱向最后一個組件;如果設置這兩個屬性為.,表明該獨享控制的GUI組件是橫向、縱向控制的倒數第二個組件,或是讓這個組件緊跟在前面添加的組件之后。

    3.fill 設置受該對象控制的GUI組件如何占據空白區域,該屬性的取值如下,

    .NONE :GUI組件不擴大

    . :GUI組件水平擴大以占據空白區域

    . :GUI組件垂直擴大以占據空白區域

    .BOTH :GUI組件水平垂直同時擴大以占據空白區域

    4.ipadx、ipady 設置受該對象控制的GUI組件橫向、縱向填充的大小,及在該組件最小尺寸的基礎上還需要增大多少。如果設置了這兩個屬性,則組件橫向的大小為最小寬度再加上ipadx*2像素,縱向的大小為最小高度再加上ipady*2像素。

    5. 設置受該對象控制的GUI組件的外部填充的大小,及該組件邊界和顯示區域邊界的距離。

    6. 設置受該對象控制的GUI組件在其顯示區域中的定位方式。定位方式如下:

    . (中間)

    .NORTH(上中)

    .(左上角 )

    .(右上角)

    .SOUTH(下中)

    java布局管理器主要包括_java swing布局管理器_后勤管理主要管理什么

    .(右下角)

    .(左下角)

    .EAST(右中)

    .WEST(左中)

    7.、 設置受該對象控制的GUI組件占用多余空間的水平、垂直增加比例(也叫權重,即的直譯),這兩個屬性的默認值是0,即該組件不占用多余的空間。假設某個容器的水平線上包括三個GUI組件,他們的水平增加比例分別為1、2、3,當容器寬度增加60的時候,第一個組件的寬度增加10,第二個組件的寬度增加20,第三個組件的寬度增加30。如果增加比率為0,表示不會增加。

    如果希望某個組件的大小隨著容器的增加而增加,則必須同時設置該組件的對象的fill屬性和、屬性。

    例如:

    public class GridBagLayoutTest {
        private JFrame f=new JFrame();
        private GridBagLayout gb=new GridBagLayout();
        private GridBagConstraints gbc=new GridBagConstraints();
        private JButton[] bs=new JButton[10];
        
        private void init(){
            f.setLayout(gb);
            for(int i=0;i){
                bs[i]=new JButton("按鈕"+i);
            }
            //設置所有組件都可以在橫向和縱向上擴大
            gbc.fill=GridBagConstraints.BOTH;
            gbc.weightx=1;
            gbc.weighty=1;
            
            addJButton(gbc,bs[0]);
            addJButton(gbc,bs[1]);
            addJButton(gbc,bs[2]);
            
            //設置該gbc控制的組件為橫向的最后一個
            gbc.gridwidth=GridBagConstraints.REMAINDER;
            addJButton(gbc,bs[3]);
            addJButton(gbc,bs[4]);
            
            //設置該gbc控制的組件不會橫向擴大
            gbc.gridwidth=GridBagConstraints.RELATIVE;
            gbc.weightx=0;
            gbc.gridwidth=2;//設置該gbc控制的組件可以占兩格
            addJButton(gbc,bs[5]);
            
            //設置為橫向最后一個組件
            gbc.gridwidth=GridBagConstraints.REMAINDER;
            addJButton(gbc,bs[6]);
            
            //設置該GridBagConstraints控制的組件橫向跨越一格,縱向跨越兩格
            gbc.gridwidth=1;
            gbc.gridheight=2;
    

    java swing布局管理器_后勤管理主要管理什么_java布局管理器主要包括

    addJButton(gbc,bs[
    7]); //設置縱向不會擴大 gbc.weighty=0; //設置該GridBagConstraints控制的組件將成為橫向的最后一個組件 gbc.gridwidth=GridBagConstraints.REMAINDER; //設置該GridBagConstraints控制的組件縱向跨域1格 gbc.gridheight=1; addJButton(gbc,bs[8]); addJButton(gbc,bs[9]); f.pack(); f.setVisible(true); } private void addJButton(GridBagConstraints gbc,JButton b){ gb.setConstraints(b, gbc); f.add(b); } public static void main(String[] args) { new GridBagLayoutTest().init(); } }

    5.

    布局管理器以時間而非空間的方式來管理它里面的組件,它將加入容器的所有組件看成一疊卡片,每次只有最上面的那個可見。就好像一副撲克牌,他們疊在一起,每次只有最上面的那張撲克牌可見。

    因為布局管理器這種特性,所以在實現AWT頁面跳轉的時候,可以使用該布局管理器來實現。有一點需要注意,往中添加的組件,默認情況下,第一個被顯示的組件是會聚焦的java布局管理器主要包括,即使在后來換成了中的其它組件,聚焦還是不會變,如果不聚焦的話將會導致一些功能不能使用(例如鍵盤響應事件),所以在換了中的組件中,必需要手動聚焦,鍵盤事件才會起作用,調用方法:.();。

    例如:

    public void mousePressed(MouseEvent e) {
                    //開始跳轉畫面
                    layout.show(layoutPanel, "game");
                    //必須要顯式聚焦,gamePanel才能聚焦,鍵盤事件才會起作用
                    gamePanel.requestFocus();
            }

    案例:

    JFrame f=new JFrame("窗口測試");
        CardLayout layout=new CardLayout();
        String[] names={"第一張","第二張","第三張","第四張","第五張"};
        JPanel p1=new JPanel();
        JPanel p2=new JPanel();
        
        
        public void init(){
    

    java swing布局管理器_java布局管理器主要包括_后勤管理主要管理什么

    p1.setLayout(layout);
    for(int i=0;i){ p1.add(names[i], new Button(names[i])); } ActionListener listener=new ActionListener() { @Override public void actionPerformed(ActionEvent e) { String name=e.getActionCommand(); if("上一張".equals(name)){ layout.previous(p1); }else if("下一張".equals(name)){ layout.next(p1); }else if("第一張".equals(name)){ layout.first(p1); }else if("最后一張".equals(name)){ layout.last(p1); }else if("第三張".equals(name)){ layout.show(p1, name); } } }; JButton previous=new JButton("上一張"); previous.addActionListener(listener); p2.add(previous); JButton next=new JButton("下一張"); next.addActionListener(listener); p2.add(next); JButton first=new JButton("第一張"); first.addActionListener(listener); p2.add(first); JButton last=new JButton("最后一張"); last.addActionListener(listener); p2.add(last); JButton three=new JButton("第三張"); three.addActionListener(listener); p2.add(three); f.add(p1); f.add(p2,BorderLayout.SOUTH); f.pack(); f.setSize(500,300); f.setVisible(true); }

    java swing布局管理器_java布局管理器主要包括_后勤管理主要管理什么

    public static void main(String[] args) { new CardLayoutTest().init(); }

    6.

    的功能雖然強大java布局管理器主要包括,但是實在太過復雜,所以Swing引入了一個新的布局管理器,保留了的許多優點,同時又沒有那么復雜。

    可以被設置到其它組件(例如,等等),但是一般和Box組件搭配使用,Box組件優點像Panel容器,但該容器使用的是布局管理器。

    下面是的一些常用方法:

    Box.createHorizontalBox();//水平擺放的組件
            Box.createVerticalBox();//垂直擺放的組件
            Box.createGlue();//可在兩個方向同時拉伸的間距
            Box.createHorizontalGlue();//可在水平方向拉伸的間距
            Box.createVerticalGlue();//可在垂直方向拉伸的間距
            Box.createHorizontalStrut(int width);//創建一個指定寬度的間距,可在垂直方向拉伸間距
            Box.createVerticalStrut(int height);//創建一個指定高度的間距,可在水平方向拉伸間距
            Box.createRigidArea(Dimension d);//創建一個指定寬度和高度的間距,水平和垂直方向都不可拉伸間距

    案例:

    JFrame f=new JFrame("窗口測試");
        //定義水平擺放的組件
        Box horizontal=Box.createHorizontalBox();
        //定義垂直擺放的組件
        Box vertical=Box.createVerticalBox();
        
        public void init(){
            horizontal.add(new JButton("水平按鈕一"));
            horizontal.add(Box.createHorizontalGlue());//水平方向可拉伸的間距
            horizontal.add(new JButton("水平按鈕二"));
            horizontal.add(Box.createHorizontalStrut(10));//水平方向不可拉伸的組件
            horizontal.add(new JButton("水平按鈕三"));
            
            vertical.add(new JButton("垂直按鈕一"));
            vertical.add(Box.createVerticalGlue());//垂直方向可拉伸的組件
            vertical.add(new JButton("垂直按鈕二"));
            vertical.add(Box.createVerticalStrut(10));//垂直方向不可拉伸的組件
            vertical.add(new JButton("垂直按鈕三"));
            
            f.add(horizontal,BorderLayout.NORTH);
            f.add(vertical);
            f.pack();
            f.setVisible(true);
        }
        public static void main(String[] args) {
            new BoxLayoutTest().init();
        }

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有