java布局學習(新)


堅持學習java一段時間,最近自己需要做一個小型的系統,所以需要自己將自己的AWT知識鞏固一下。

一、4大布局管理器。

1.邊界布局BorderLayout

JFrameJDialog的默認布局方法,可以看成地圖的排列方式,一共四個方位:東西南北和地圖一樣,不同的是上北和下南都沒有中間的位置占有的大,中部的占有最大。

舉例:

 

package com.ly;

import javax.swing.*;
import java.awt.*;

public class demo1 extends JFrame{

    JButton jb1,jb2,jb3,jb4,jb5;
    public static void main(String[] args) {
        // TODO Auto-generated method stub
       demo1 d1=new demo1();
    }
    public demo1()
    {
        jb1=new JButton("中");
        jb2=new JButton("北");
        jb3=new JButton("東");
        jb4=new JButton("南");
        jb5=new JButton("西");
        
        //添加各個組件
        this.add(jb1,BorderLayout.CENTER);
        this.add(jb2,BorderLayout.NORTH);
        this.add(jb3,BorderLayout.EAST);
        this.add(jb4,BorderLayout.SOUTH);
        this.add(jb5,BorderLayout.WEST);
        
        //設置布局
        this.setTitle("邊界布局");
        this.setSize(300,300);
        this.setLocation(200,200);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
        
    }
}

 

 

2.流式布局FlowLayout

這樣的布局會使部件想水流一樣流動從左到右排列,直到遇到邊界后才重新排列。在Panel中默認使用這種排列方式。

舉例:

 

package com.ly;

import java.awt.FlowLayout;

import javax.swing.*;

public class Demo2 extends JFrame{

    JButton jb1,jb2,jb3,jb4,jb5;
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Demo2 d2=new Demo2();
    }

    public Demo2()
    {
        jb1=new JButton("1");
        jb2=new JButton("2");
        jb3=new JButton("3");
        jb4=new JButton("4");
        jb5=new JButton("5");
        
        this.add(jb1);
        this.add(jb2);
        this.add(jb3);
        this.add(jb4);
        this.add(jb5);
        
        //設置布局
        this.setLayout(new FlowLayout());
        this.setTitle("流布局");
        this.pack();
        this.setLocation(200,200);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
    }
}

 

 

3.GridLayout布局管理器

這樣的布局管理將容器分割成縱橫線的網絡。我個人認為這樣的布局方式較上兩種都好,因為更加靈活,寫一些基本的布局都可以轉換。

package com.ly;
import java.awt.GridBagLayout;
import java.awt.GridLayout;

import javax.swing.*;

public class Demo3 extends JFrame{

    int size=9;
    JButton []jbs=new JButton[size];

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        Demo3 d3=new Demo3();
    
       
    }

     public Demo3()
        {
            for(int i=0;i<size;i++)
            {
                jbs[i]=new JButton(String.valueOf(i));
            }
            
            //設置網格布局
            this.setLayout(new GridLayout(3,3));
            
            for(int i=0;i<size;i++)
            {
                this.add(jbs[i]);
            }
            
            this.setTitle("網格布局");
            this.setSize(300,300);
            this.setLocation(200,200);
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setVisible(true);
        }
}

4.CardLayout布局器

CardLayout布局器采用時間進行管理組件,可以看層是一個卡片盒,只有最上面的compent可見。

剩下的兩種是我體會比較深的,特別是空布局,簡直萬能,不過就是要自己定位有些麻煩,大家有機會可以試試。

1.null布局

Container 的布局管理器設置為nullsetLayout(null)

再往容器添加時先調用setBounds()setSize()設置組建大小和位置

2.BoxLayout布局管理器

我沒用過這種管理器,不過這種管理器應該很強大,大家試試。

BoxLayout(Cotainer target,int axis)  而布局有axis橫向排列和

縱向排列

如:f.setLayout(new BoxLayout(f,BoxLayout.y_AXIS));

BoxLayout通常和Box聯合使用

二、AWT的常用組件

直接上程序吧,比較清晰。

 

 1 //AWT基本組件
 2 package com.ly.ll;
 3 import java.awt.*;
 4 import javax.swing.*;
 5 
 6 public class compoment {
 7 
 8     Frame f;  //創建窗口
 9     Button bt;
10     CheckboxGroup cbg;  //復選框組
11     Checkbox male,female,married;  //復選框
12     Choice colorChoice;  //下拉選框
13     List colorList;   //列表選擇框
14     TextArea ta;   //文本域(多行)
15     TextField name;  //文本域(單行)
16     
17     public static void main(String []args)
18     {
19         compoment cp=new compoment();
20     }
21     
22     
23     public compoment()
24     {
25         //創建組件
26         f=new Frame("測試界面");
27         bt=new Button("確認");
28         cbg=new CheckboxGroup();
29         male =new Checkbox("男",cbg,true);
30         female =new Checkbox("女",cbg,false);
31         married =new Checkbox("是否已婚?",false);
32         colorChoice=new Choice();
33         colorList=new List(3,true);
34         ta=new TextArea(5,20);   //5行20 列
35         name=new TextField(50);   //50列
36         
37         //初始化組件
38         colorChoice.add("紅");
39         colorChoice.add("黃");
40         colorChoice.add("藍");
41         colorList.add("紅");
42         colorList.add("黃");
43         colorList.add("藍");
44         //panel裝載文本按鈕
45         Panel bottom=new Panel();
46         bottom.add(name);
47         bottom.add(bt);
48         f.add(bottom,BorderLayout.SOUTH); //Frame默認邊界布局
49         
50         Panel p2=new Panel();
51         p2.add(colorChoice);
52         p2.add(male);
53         p2.add(female);
54         p2.add(married);
55         
56         //創建垂直組件BOX
57         Box topList=Box.createVerticalBox();
58         topList.add(ta); //放入多航文本域
59         topList.add(p2);
60         
61         Box top=Box.createVerticalBox();
62         top.add(topList);
63         top.add(colorList);
64         f.add(top);
65         f.pack();
66         
67         f.setVisible(true);
68     }
69 }

 

 

顯示結果:

這樣就對上面的知識點有了簡單的總結和認識,但是要進行開發還是遠遠不夠的

 下面是java實戰.轉(url)

  每日一小步,月過一大步~~加油


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM