java卡片布局显示效果_三十二、Java图形化界面设计——布局管理器之CardLayout(卡片布局)...
摘自
http://blog.csdn.net/liujun13579/article/details/7773945
卡片布局能夠讓多個組件共享同一個顯示空間,共享空間的組件之間的關系就像一疊牌,組件疊在一起,初始時顯示該空間中第一個添加的組件,通過CardLayout類提供的方法可以切換該空間中顯示的組件。
1、? CardLayout類的常用構造函數及方法
2、? 使用CardLayout類提供的方法可以切換顯示該空間中的組件
方法一
步驟:
(1)??????定義使用卡片布局的容器
例如:Panel cardPanel=new Panel();
(2)??????定義卡片對象:CardLayout?布局對象名稱=new CardLayout();
例如:CardLayout card=new CardLayout();
(3)??????設置使用卡片布局的容器為卡片布局:
格式:容器名稱.setLayout(布局對象名稱);
例如:cardPanel.setLayout(card);
(4)??????設置容器中顯示的組件
例如:for (int i = 0; i < 5; i++) {
cardPanel.add(newJButton("按鈕"+i));
}
(5)??????定義響應事件代碼,讓容器顯示相應的組件
格式:
n? 布局對象名稱.next(容器名稱)?? 顯示容器中當前組件之后的一個組件,若當前組件為最后添加的組件,則顯示第一個組件,即卡片組件顯示是循環的。
n? 布局對象名稱.first(容器名稱)?? 顯示容器中第一個組件
n? 布局對象名稱.last(容器名稱)?? 顯示容器中最后一個組件
n? 布局對象名稱.previous(容器名稱)?? 顯示容器中當前組件之前的一個組件,若當前組件為第一個添加的組件,則顯示最后一個組件,即卡片組件顯示是循環的。
例如:
card.next(cardPanel);
card.previous(cardPanel);
card.first(cardPanel);
card.last(cardPanel);
實例一:卡片的切換
窗體默認邊界布局,一個面板以卡片布局,面板上添加五個按鈕,該面板添加到CENTER位置,另一個面板添加兩個按鈕,兩個按鈕添加事件來切換顯示CENTER位置中的面板的組件
程序顯示結果如下圖所示,單擊“上一張卡片”、“下一張卡片”等按鈕可以上面的面板中顯示不同的按鈕來。
packagecom.wst.bj;import java.awt.*;import javax.swing.*;import java.awt.event.*;//引入事件包//定義類時實現監聽接口
public class CardLayoutDemo extends JFrame implementsActionListener {
JButton nextbutton;
JButton preButton;
Panel cardPanel= newPanel();
Panel controlpaPanel= newPanel();//定義卡片布局對象
CardLayout card= newCardLayout();//定義構造函數
publicCardLayoutDemo() {super("卡片布局管理器");
setSize(300, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);//設置cardPanel面板對象為卡片布局
cardPanel.setLayout(card);//循環,在cardPanel面板對象中添加五個按鈕//因為cardPanel面板對象為卡片布局,因此只顯示最先添加的組件
for (int i = 0; i < 5; i++) {
cardPanel.add(new JButton("按鈕" +i));
}//實例化按鈕對象
nextbutton= new JButton("下一張卡片");
preButton= new JButton("上一張卡片");//為按鈕對象注冊監聽器
nextbutton.addActionListener(this);
preButton.addActionListener(this);
controlpaPanel.add(preButton);
controlpaPanel.add(nextbutton);//定義容器對象為當前窗體容器對象
Container container=getContentPane();//將 cardPanel面板放置在窗口邊界布局的中間,窗口默認為邊界布局
container.add(cardPanel, BorderLayout.CENTER);//將controlpaPanel面板放置在窗口邊界布局的南邊,
container.add(controlpaPanel, BorderLayout.SOUTH);
}//實現按鈕的監聽觸發時的處理
public voidactionPerformed(ActionEvent e) {//如果用戶單擊nextbutton,執行的語句
if (e.getSource() ==nextbutton) {//切換cardPanel面板中當前組件之后的一個組件//若當前組件為最后添加的組件,則顯示第一個組件,即卡片組件顯示是循環的。
card.next(cardPanel);
}if (e.getSource() ==preButton) {//切換cardPanel面板中當前組件之前的一個組件//若當前組件為第一個添加的組件,則顯示最后一個組件,即卡片組件顯示是循環的。
card.previous(cardPanel);
}
}
}
方法二
步驟:
(1)??????定義使用卡片布局的容器
例如:Panel cardPanel=new Panel();
(2)??????定義卡片對象:CardLayout 布局對象名稱=newCardLayout();
例如:CardLayout card=new CardLayout();
(3)??????設置使用卡片布局的容器為卡片布局:
格式:容器名稱.setLayout(卡片對象名稱);
例如:cardPanel.setLayout(card);
(4)??????設置容器中顯示的組件,同時為組件命名對應的卡片名稱
格式:?容器名稱. Add(卡片名稱,組件名稱)
例如:for (int i = 0; i < 4; i++) {
cardPanel.add(“0”,newJButton("按鈕"+i));
}
(5)??????定義響應事件代碼,讓容器顯示相應的組件
格式:卡片對象名稱.show(容器名稱,卡片名稱)
例如:card.show(cardPanel,”0”);
實例二:使用CardLayout類的show方法顯示組件。
窗體默認邊界布局,一個面板以卡片布局,面板上添加4個按鈕,該面板添加到CENTER位置,另一個面板添加4個按鈕,這4個按鈕添加事件來切換顯示CENTER位置中的面板的組件按鈕。
程序執行結果:
1 packagecom.wst.bj;2
3 import java.awt.*;4
5 import javax.swing.*;6
7 import java.awt.event.*;//引入事件包8
9 //定義類時 實現監聽接口
10
11 public class CardLayoutDemo2 extends JFrame implementsActionListener {12
13 JButton b0, b1, b2, b3;14
15 Panel cardPanel = newPanel();16
17 Panel controlpaPanel = newPanel();18
19 //定義卡片布局對象
20
21 CardLayout card = newCardLayout();22
23 //定義字符數組,為卡片命名
24
25 String cardName[]=
26 {"0","1","2","3"};27
28 //定義構造函數
29
30 publicCardLayoutDemo2() {31
32 super("卡片布局管理器");33
34 setSize(400, 200);35
36 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);37
38 setLocationRelativeTo(null);39
40 setVisible(true);41
42 //設置cardPanel面板對象為卡片布局
43
44 cardPanel.setLayout(card);45
46 //循環,在cardPanel面板對象中添加4個按鈕47
48 //因為cardPanel面板對象為卡片布局,因此初始時顯示最先添加的組件
49
50 for (int i = 0; i < 4; i++) {51
52 //面板中添加的每個按鈕對應設置一個卡片名
53
54 cardPanel.add(cardName[i], new JButton("按鈕" +i));55
56 }57
58 //實例化按鈕對象
59
60 b0 = new JButton("0");61
62 b1 = new JButton("1");63
64 b2 = new JButton("2");65
66 b3 = new JButton("3");67
68 //為按鈕對象注冊監聽器
69
70 b0.addActionListener(this);71
72 b1.addActionListener(this);73
74 b2.addActionListener(this);75
76 b3.addActionListener(this);77
78 controlpaPanel.add(b0);79
80 controlpaPanel.add(b1);81
82 controlpaPanel.add(b2);83
84 controlpaPanel.add(b3);85
86 //定義容器對象為當前窗體容器對象
87
88 Container container =getContentPane();89
90 //將 cardPanel面板放置在窗口邊界布局的中間,窗口默認為邊界布局
91
92 container.add(cardPanel, BorderLayout.CENTER);93
94 //將controlpaPanel面板放置在窗口邊界布局的南邊,
95
96 container.add(controlpaPanel, BorderLayout.SOUTH);97
98 }99
100 //實現按鈕的監聽觸發時的處理
101
102 public voidactionPerformed(ActionEvent e){103
104 //用戶單擊b0按鈕時執行的語句
105
106 if(e.getSource()==b0){107
108 //通過show()方法中的卡片名稱,顯示容器中的組件。
109
110 card.show(cardPanel,cardName[0]);111
112 }113
114 if(e.getSource()==b1){115
116 card.show(cardPanel,cardName[1]);117
118 }119
120 if(e.getSource()==b2){121
122 card.show(cardPanel,cardName[2]);123
124 }125
126 if(e.getSource()==b3){127
128 card.show(cardPanel,cardName[3]);129
130 }131
132 }133 }
總結
以上是生活随笔為你收集整理的java卡片布局显示效果_三十二、Java图形化界面设计——布局管理器之CardLayout(卡片布局)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 微信高级群发_微信高级群发接口
- 下一篇: lacp可以在access接口吗_【基础