1. 程式人生 > >java中的swing元件、主要三大布局管理器的應用

java中的swing元件、主要三大布局管理器的應用


一、JFrame的簡單運用:

package com.test1;
import java.awt.*;
import javax.swing.*;
public class Demo1_1 extends JFrame{
//定義按鈕元件
JButton jb1=null;
public static void main(String[] args) {
Demo1_1 dm=new Demo1_1();
}
//建構函式
public Demo1_1()
{
//初始化按鈕元件
jb1=new JButton("按鈕1");
//新增元件
this.add(jb1);

//設定視窗標題
this.setTitle("Hello world");
//設定視窗大小,視窗大小的單位是畫素
this.setSize(200, 200);
//設定視窗位置,視窗位置定義的是視窗最左上角的點的座標
this.setLocation(100, 100);
//設定當關閉視窗時保證JVM也退出
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//顯示視窗
this.setVisible(true);
}
}

二、佈局管理器--介紹

1、概念:元件在容器(比如JFrame)中的位置和大小是由佈局管理器來決定的。所有的容器都會使用一個佈局管理器,通過它來自動進行元件的佈局管理。

2、種類:java共提供了五種佈局管理器:流式佈局管理器(FlowLayout)、邊界佈局管理器(BorderLayout)、網格佈局管理器(GridLayout)、卡片佈局管理器(CardLayout)、網格包佈局管理器(GridBagLayout)。其中前三種是最常見的佈局管理器。

介紹:

(一)、邊界佈局管理器(BorderLayout):將容器簡單的劃分為東南西北中五個區域,

中間區域最大,JFrame預設此佈局。          

案例程式碼:

/*
 * BorderLayout演示
 * 1、繼承JFrame
 * 2、定義你需要的元件
 * 3、建立元件(建構函式裡初始化建立)
 * 4、新增元件(引用邊界佈局管理器來新增元件的過程中佈局)
 * 5、對窗體的設定
 * 6、顯示窗體
 */
package com.test1;
import java.awt.*;
import javax.swing.*;
public class Demo1_2 extends JFrame{
//定義五個元件
JButton jb1,jb2,jb3,jb4,jb5;
public static void main(String[] args) {
// TODO Auto-generated method stub
Demo1_2 dm=new Demo1_2();
}
//建構函式
public Demo1_2()
{
//建立元件
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(800, 400);
//設定關閉窗體同時退出JVM
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//顯示窗體
this.setVisible(true);
}
}


邊界佈局管理器(BorderLayout)--注意事項:

1、不是五個部分都必須新增

2、中部元件會自動的調節大小(中間部分最強勢)

3、JFrame,JDialog預設佈局管理器就是BorderLayout

(二)、流式佈局管理器(FlowLayout): 按照元件新增的次序將定義的元件從左至右放置到容器中,當達到容器的邊界時,元件將放置在下一行中。FloeLayout可以選擇以左對齊、居中對齊、以右對齊的方式排列元件。

案例程式碼如下:

/*
 * 流式佈局案例
 */
package com.test1;
import java.awt.*;
import javax.swing.*;
public class Demo1_3 extends JFrame{
JButton jb1,jb2,jb3,jb4,jb5,jb6;
public static void main(String[] args) {
// TODO Auto-generated method stub
Demo1_3 dm=new Demo1_3();
}

//構造
public Demo1_3()
{
//建立元件
jb1=new JButton("關羽");
jb2=new JButton("張飛");
jb3=new JButton("趙雲");
jb4=new JButton("馬超");
jb5=new JButton("黃忠");
jb6=new JButton("魏延");

//新增元件
this.add(jb1);
this.add(jb2);
this.add(jb3);
this.add(jb4);
this.add(jb5);
this.add(jb6);

//設定佈局管理器,流式佈局預設是中間對齊,
//我們要在new FlowLayout(FlowLayout.LEFT)設定,此時設定的是左對齊
this.setLayout(new FlowLayout(FlowLayout.LEFT));

//設定窗體屬性
//窗體標題
this.setTitle("邊界佈局案例");
//設定窗體大小
this.setSize(300, 300);
//設定窗體位置
this.setLocation(800, 400);
//設定關閉窗體同時退出JVM
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//顯示窗體
this.setVisible(true);
}
}

流式佈局(FlowLayout)--注意事項

1、不限制他所管理的元件的大小,允許他們有最佳大小

2、當容器被縮放時,元件的位置可能變化,但是元件的大小不變

3、預設元件是居中對齊,可以通過FlowLayout(intalign)函式來指定對齊方式

(三)、網格佈局GridLayout:它將容器分割成多行多列,元件被填充到每個網格中,新增到容器中的元件首先放置在左上角的網格中,然後從左到右放置其他的元件,當佔滿該行的所有網格後,接著繼續在下一行從左至右放置元件。

案例程式碼如下:

/*
 * 網格佈局演示
 */
package com.test1;
import java.awt.*;
import javax.swing.*;
public class Demo1_4 extends JFrame{
//定義元件
int size=9;
JButton jbs[]=new JButton[size];
public static void main(String[] args) {
// TODO Auto-generated method stub
Demo1_4 dm=new Demo1_4();
}


//構造
public Demo1_4()
{
//建立元件
for(int i=0;i<size;i++)
{
jbs[i]=new JButton(String.valueOf(i));
}
//設定網格佈局管理器,設定3行3列,每個元件間隔水平方向10,垂直方向10 個畫素
this.setLayout(new GridLayout(3,3,10,10));
//新增元件
for(int i=0;i<size;i++)
{
this.add(jbs[i]);
}

//設定窗體屬性
this.setTitle("網格佈局案例");
this.setSize(300,300);
this.setLocation(700,400);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}

網格佈局GridLayout --注意事項

1、元件的相對位置不隨容器的縮放變化,但是元件的大小會變,也就是講我們縮放視窗時元件之間的間隙是不會隨之變化的,但是元件大小會等比例的變化

2、所有元件的大小是相同的

3、可以通過GridLayout(int rows,int cols,int hgap,int vgap)來指定網格的行/列,水平間隙/垂直間隙。