/*
?? 朋友你好啊!我是尋覓,這個代碼是網上找的,有個網友最近在弄
????? 我注釋了一下,給大家看,由于剛剛接觸,寫錯之處還請指出,謝謝支持!
??? AWT包括4個主要的類:
Component(構件)——菜單、按鈕、標簽、列表等構件的抽象基本類
Container(容器)——擴展Component的抽象基本類。由Container演變的類,如Panel、Applet、
??????? Window、Dialog和Frame等
LayoutManager(布局管理器)——定義容器中構件位置和尺寸方法的接口
Graphics(圖形類)——定義構件內圖形操作的基本類,每個構件都有一個相關的圖形對象
??? (具體內容大家自己查API文檔)
*/
??1
import
?java.awt.Component;
??2
import
?java.awt.Container;
??3
import
?java.awt.GraphicsEnvironment;
??4
import
?java.awt.GridBagConstraints;
??5
import
?java.awt.GridBagLayout;
??6
??7
import
?javax.swing.JCheckBox;
??8
import
?javax.swing.JComboBox;
??9
import
?javax.swing.JFrame;
?10
import
?javax.swing.JLabel;
?11
import
?javax.swing.JPanel;
?12
import
?javax.swing.JTextArea;
?13
?14
public
?
class
?GirdBagLayoutTest
?15
{
?16
?17
????
public
?
static
?
void
?main(String[]?args)?????????????????????????
//
主函數創建
?18
????
{
?19
????????GirdBagLayoutFrame?frame?
=
?
new
?GirdBagLayoutFrame();???????
//
窗口創建
?20
????????frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);??????
//
設置默認關閉操作??
?21
????????frame.setVisible(
true
);????????????????????????????????????
//
設置組件可視化
?22
????}
?23
}
?24
?25
class
?GirdBagLayoutFrame?
extends
?JFrame
?26
{
?27
????
public
?GirdBagLayoutFrame()
?28
????
{
?29
????????setTitle(
"
網格組事件
"
);??????????????????????
?30
????????setSize(
300
,
150
);???????????????????????????????????
//
窗口大小
?31
?32
????????Container?con?
=
?getContentPane();????????????????????
//
創建容器
?33
????????GirdBagLayoutPanel?panel?
=
?
new
?GirdBagLayoutPanel();????
//
創建畫板
?34
????????con.add(panel);?????????????????????????????????????????
//
將畫板加如容器
?35
????}
?36
}
?37
?38
class
?GirdBagLayoutPanel?
extends
?JPanel
?39
{
?40
????
public
?JLabel?lname,?lsize;???????????????????????????????
//
創建兩個標簽
?41
?42
????
public
?JComboBox?cname,?csize;???????????????????????????
//
創建兩個列表框
?43
?44
????
public
?JCheckBox?bold,?italic;???????????????????????????
//
創建兩個復選框
?45
?46
????
public
?JTextArea?area;????????????????????????????????????
//
創建文本書寫
?47
?48
????
public
?GirdBagLayoutPanel()???????????????????????????????
//
重點,加入組件
?49
????
{
?50
????????lname?
=
?
new
?JLabel(
"
Name
"
);????????????????????????????
//
初始化兩個標簽
?51
????????lsize?
=
?
new
?JLabel(
"
Size
"
);
?52
????????String[]?fonts?
=
?GraphicsEnvironment.getLocalGraphicsEnvironment()
//
調用GraphicsEnvironment關于本地的一個
?53
????????????????.getAvailableFontFamilyNames();???????????????
//
方法getLocalGraphicsEnvironment()接著繼續調用
?54
??????????????????????????????????????????????????????????????
//
抽象類getAvailableFontFamilyNames
?55
??????????????????????????????????????????????????????????????
//
這里創建的變量fonts用于向用戶展示特定字體系列名稱
?56
?57
????????cname?
=
?
new
?JComboBox(fonts);???????????????????????????
//
將font加入
?58
????????csize?
=
?
new
?JComboBox(
new
?String[]
?59
????????
{?
"
8
"
,?
"
12
"
,?
"
14
"
,?
"
16
"
,?
"
18
"
,?
"
20
"
,?
"
24
"
,?
"
26
"
,?
"
36
"
?}
);?
//
普通列表框加入,字體大小
?60
?61
????????bold?
=
?
new
?JCheckBox(
"
Bold
"
);??????????????????????????
//
設置兩個復選旁邊的標簽
?62
????????italic?
=
?
new
?JCheckBox(
"
Italic
"
);
?63
????????area?
=
?
new
?JTextArea(
"
歡迎來到太湖
"
);?????????????????
//
在文本寫入部分寫入內容
?64
????????area.setLineWrap(
true
);
//
自動換行??????????????????????
//
在文本寫入部分設置允許換行
?65
????????
//
實例化網格組布局
?66
?
//
************************重中之重******************************************************/???
?67
????????GridBagLayout?layout?
=
?
new
?GridBagLayout();
?68
????????
//
GridBagLayout在AWT里用于設置布局管理
?69
????????setLayout(layout);
?70
????????
//
實例化網格組布局的限制類(此類協助網格組布局類完成工作)
?71
????????GridBagConstraints?constraints?
=
?
new
?GridBagConstraints();
?72
????????
//
創建加組件的容器
?73
????????constraints.anchor?
=
?GridBagConstraints.EAST;
//
居右對齊
?74
????????constraints.fill?
=
?GridBagConstraints.NONE;
//
不填充
?75
????????constraints.weightx?
=
?
0
;?
//
水平方向不縮放
?76
????????constraints.weighty?
=
?
0
;?
//
垂直方向不縮放??0代表不縮放?100代表縮放
?77
????????
//
容器設置結束,開始加組件
?78
????????
//
這里要先向大家解釋這個:(constraints"約束",?“控件的”x?“坐標”,?y?"坐標"?,?“寬度”?,"高度")
?79
????????
//
具體實現方法看下面的addObj函數;
?80
????????addObj(constraints,
0
,
0
,
1
,
1
,lname);???
//
加入兩個標簽
?81
????????addObj(constraints,
0
,
1
,
1
,
1
,lsize);
?82
????????
?83
????????constraints.fill?
=
?GridBagConstraints.HORIZONTAL;
//
水平填充
?84
????????constraints.weightx?
=
?
100
;
//
水平縮放
?85
????????addObj(constraints,
1
,
0
,
1
,
1
,cname);
?86
????????addObj(constraints,
1
,
1
,
1
,
1
,csize);
?87
????????
?88
????????constraints.weighty?
=
?
100
;
//
垂直縮放
?89
????????constraints.fill?
=
?GridBagConstraints.NONE;
//
不填充
?90
????????constraints.anchor?
=
?GridBagConstraints.CENTER;
//
居中對其
?91
????????addObj(constraints,
0
,
2
,
2
,
1
,bold);
?92
????????addObj(constraints,
0
,
2
,
6
,
1
,italic);
?93
????????
?94
????????constraints.fill?
=
?GridBagConstraints.BOTH;
//
水平垂直都填充
?95
????????addObj(constraints,
2
,
0
,
1
,
4
,area);
?96
//
***************************************************************************************/??????????????????????
?97
????}
?98
????
?99
????
//
方法,注意加控件的函數是沒有返回值的;
100
????
public
?
void
?addObj(GridBagConstraints?gc,
int
?x,
int
?y,
int
?w,
int
?h,
101
???????????????????????Component?c)
//
傳遞參數?Component?主鍵
102
????
{
103
????????gc.gridx?
=
?x;
104
????????gc.gridy?
=
?y;
105
????????gc.gridwidth?
=
?w;
106
????????gc.gridheight?
=
?h;
107
????????add(c,gc);
108
????}
109
}
110
111

??2

??3

??4

??5

??6

??7

??8

??9

?10

?11

?12

?13

?14

?15



?16

?17

?18



?19

?20

?21

?22

?23

?24

?25

?26



?27

?28



?29

?30

?31

?32

?33

?34

?35

?36

?37

?38

?39



?40

?41

?42

?43

?44

?45

?46

?47

?48

?49



?50

?51

?52

?53

?54

?55

?56

?57

?58

?59



?60

?61

?62

?63

?64

?65

?66

?67

?68

?69

?70

?71

?72

?73

?74

?75

?76

?77

?78

?79

?80

?81

?82

?83

?84

?85

?86

?87

?88

?89

?90

?91

?92

?93

?94

?95

?96

?97

?98

?99

100

101

102



103

104

105

106

107

108

109

110

111

地震讓大伙知道:居安思危,才是生存之道。
