java 布局教程_java布局学习(新)
堅持學習java一段時間,最近自己需要做一個小型的系統,所以需要自己將自己的AWT知識鞏固一下。
一、4大布局管理器。
1.邊界布局BorderLayout
是JFrame和JDialog的默認布局方法,可以看成地圖的排列方式,一共四個方位:東西南北和地圖一樣,不同的是上北和下南都沒有中間的位置占有的大,中部的占有最大。
舉例:
packagecom.ly;import javax.swing.*;import java.awt.*;public class demo1 extendsJFrame{
JButton jb1,jb2,jb3,jb4,jb5;public static voidmain(String[] args) {//TODO Auto-generated method stub
demo1 d1=newdemo1();
}publicdemo1()
{
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中默認使用這種排列方式。
舉例:
packagecom.ly;importjava.awt.FlowLayout;import javax.swing.*;public class Demo2 extendsJFrame{
JButton jb1,jb2,jb3,jb4,jb5;public static voidmain(String[] args) {//TODO Auto-generated method stub
Demo2 d2=newDemo2();
}publicDemo2()
{
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(newFlowLayout());this.setTitle("流布局");this.pack();this.setLocation(200,200);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);
}
}
3.GridLayout布局管理器
這樣的布局管理將容器分割成縱橫線的網絡。我個人認為這樣的布局方式較上兩種都好,因為更加靈活,寫一些基本的布局都可以轉換。
packagecom.ly;importjava.awt.GridBagLayout;importjava.awt.GridLayout;import javax.swing.*;public class Demo3 extendsJFrame{int size=9;
JButton []jbs=newJButton[size];public static voidmain(String[] args) {//TODO Auto-generated method stub
Demo3 d3=newDemo3();
}publicDemo3()
{for(int i=0;i
{
jbs[i]=newJButton(String.valueOf(i));
}//設置網格布局
this.setLayout(new GridLayout(3,3));for(int i=0;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的布局管理器設置為null,setLayout(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 packagecom.ly.ll;3 import java.awt.*;4 import javax.swing.*;5
6 public classcompoment {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 voidmain(String []args)18 {19 compoment cp=newcompoment();20 }21
22
23 publiccompoment()24 {25 //創建組件
26 f=new Frame("測試界面");27 bt=new Button("確認");28 cbg=newCheckboxGroup();29 male =new Checkbox("男",cbg,true);30 female =new Checkbox("女",cbg,false);31 married =new Checkbox("是否已婚?",false);32 colorChoice=newChoice();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=newPanel();46 bottom.add(name);47 bottom.add(bt);48 f.add(bottom,BorderLayout.SOUTH); //Frame默認邊界布局
49
50 Panel p2=newPanel();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)
每日一小步,月過一大步~~加油
總結
以上是生活随笔為你收集整理的java 布局教程_java布局学习(新)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 达华智能是什么公司
- 下一篇: java script isblank_