容器是 SWING GUI 組件的組成部分。一個容器提供了一個可以放置組件的空間。在 AWT 中,一個容器是組件本身,并且它增加了功能來添加組件本身。下面是需要考慮的注意事項(xiàng)。
容器的子類被稱為容器。例如 JPanel,JFrame 和 JWindow。
容器可以僅僅添加組件到自身。
從功能上可分為:
頂層容器:JFrame、JApplet、JDialog、JWindow共4個
中間容器:JPanel、JScrollPane、JSplitPane、JToolBar
使用 JFrame 類創(chuàng)建 GUI 界面時,其組件的布局組織示意如圖 1 所示。
圖1 JFrame窗口組件組織
在圖 1 中顯示有“大家好”的 Swing 組件需要放到內(nèi)容窗格的上面,內(nèi)容窗格再放到 JFrame 頂層容器的上面。菜單欄可以直接放到頂層容器 JFrame 上,而不通過內(nèi)容窗格。內(nèi)容窗格是一個透明的沒有邊框的中間容器。
下面是當(dāng)使用 SWING 設(shè)計(jì) GUI 事件時常用的容器列表。
序號 | 容器 & 描述 |
---|---|
1 |
Panel JPanel 是一個最簡單的容器。它提供了任何其他組件可以被放置的空間,包括其他面板。 |
2 |
Frame JFrame 是一個帶有標(biāo)題和邊界的頂層窗口。 |
3 |
Window JWindow 對象是一個沒有邊界和菜單條的頂層窗口。 |
在了解窗口組件 JFrame 的語法之后,下面使用 JFrame 類創(chuàng)建一個窗口。要求設(shè)置窗口的標(biāo)題為“Java 第一個 GUI 程序”,并向窗口內(nèi)添加“這是使用 JFrame 類創(chuàng)建的窗口”文本。具體實(shí)現(xiàn)代碼如下:
- package ch17;
- import javax.swing.JFrame;
- import javax.swing.JLabel;
- import java.awt.*;
- public class JFrameDemo extends JFrame
- {
- public JFrameDemo()
- {
- setTitle("Java 第一個 GUI 程序"); //設(shè)置顯示窗口標(biāo)題
- setSize(400,200); //設(shè)置窗口顯示尺寸
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //置窗口是否可以關(guān)閉
- JLabel jl=new JLabel("這是使用JFrame類創(chuàng)建的窗口"); //創(chuàng)建一個標(biāo)簽
- Container c=getContentPane(); //獲取當(dāng)前窗口的內(nèi)容窗格
- c.add(jl); //將標(biāo)簽組件添加到內(nèi)容窗格上
- setVisible(true); //設(shè)置窗口是否可見
- }
- public static void main(String[] agrs)
- {
- new JFrameDemo(); //創(chuàng)建一個實(shí)例化對象
- }
- }
上述代碼創(chuàng)建的 JFrameDemo 類繼承了 JFrame 類,因此 JFrameDemo 類可以直接使用 JFrame 類的方法。setTitle() 方法用來設(shè)置窗口標(biāo)題,setDefaultCloseOperation() 方法用來設(shè)置響應(yīng)方式,即當(dāng)單擊“關(guān)閉”按鈕時退出該程序。
在構(gòu)造方法中使用 JLabel 類創(chuàng)建一個標(biāo)簽對象 jl,其參數(shù)是標(biāo)簽的文本提示信息。JFrame 框架的 getContentPane() 方法獲取了內(nèi)容窗格對象,并使用 add() 方法將標(biāo)簽添加到內(nèi)容窗格上。最后的 setVisible() 方法是從父類中繼承的方法。
程序運(yùn)行的窗口結(jié)果如圖 2 所示。
圖2 窗口運(yùn)行結(jié)果
更多建議: