C語言中文網 目錄
首頁 > Java Swing 閱讀:3,274

Java Swing JFrame和JPanel:窗口容器和面板容器

< 上一頁Swing簡介 Swing布局管理器下一頁 >

Swing 中,任何其他組件都必須位于一個頂層容器中。JFrame 窗口和 JPanel 面板是常用的頂層容器,本節詳細介紹這兩個容器的使用方法。

JFrame 窗口

JFrame 用來設計類似于 Windows 系統中窗口形式的界面。JFrame 是 Swing 組件的頂層容器,該類繼承了 AWT 的 Frame 類,支持 Swing 體系結構的高級 GUI 屬性。

JFrame 類的常用構造方法如下所示。
  • JFrame():構造一個初始時不可見的新窗體。
  • JFrame(String title):創建一個具有 title 指定標題的不可見新窗體。

當創建一個 JFrame 類的實例化對象后,其他組件并不能夠直接放到容器上面,需要將組件添加至內容窗格,而不是直接添加至 JFrame 對象。示例代碼如下:
frame.getContentPane().add(b);

使用 JFrame 類創建 GUI 界面時,其組件的布局組織示意如圖 1 所示。

JFrame窗口組件組織
圖1 JFrame窗口組件組織

在圖 1 中顯示有“大家好”的 Swing 組件需要放到內容窗格的上面,內容窗格再放到 JFrame 頂層容器的上面。菜單欄可以直接放到頂層容器 JFrame 上,而不通過內容窗格。內容窗格是一個透明的沒有邊框的中間容器。

JFrame 類中的常用方法如表 1 所示。

表1 JFrame類的常用方法
方法名稱 概述
getContentPane() 返回此窗體的 contentPane 對象
getDefaultCloseOperation() 返回用戶在此窗體上單擊“關閉”按鈕時執行的操作
setContentPane(Container contentPane) 設置 contentPane 屬性
setDefaultCloseOperation(int operation) 設置用戶在此窗體上單擊“關閉”按鈕時默認執行的操作
setDefaultLookAndFeelDecorated (boolean
defaultLookAndFeelDecorated)
設置 JFrame 窗口使用的 Windows 外觀(如邊框、關
閉窗口的 小部件、標題等)
setIconImage(Image image) 設置要作為此窗口圖標顯不的圖像
setJMenuBar( JMenuBar menubar) 設置此窗體的菜單欄
setLayout(LayoutManager manager) 設置 LayoutManager 屬性

例 1

在了解窗口組件 JFrame 的語法之后,下面使用 JFrame 類創建一個窗口。要求設置窗口的標題為“Java 第一個 GUI 程序”,并向窗口內添加“這是使用 JFrame 類創建的窗口”文本。具體實現代碼如下:
package ch17;
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.*;
public class JFrameDemo extends JFrame
{
    public JFrameDemo()
    {
        setTitle("Java 第一個 GUI 程序");    //設置顯示窗口標題
        setSize(400,200);    //設置窗口顯示尺寸
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    //置窗口是否可以關閉
        JLabel jl=new JLabel("這是使用JFrame類創建的窗口");    //創建一個標簽
        Container c=getContentPane();    //獲取當前窗口的內容窗格
        c.add(jl);    //將標簽組件添加到內容窗格上
        setVisible(true);    //設置窗口是否可見
    }
    public static void main(String[] agrs)
    {
        new JFrameDemo();    //創建一個實例化對象
    }
}

上述代碼創建的 JFrameDemo 類繼承了 JFrame 類,因此 JFrameDemo 類可以直接使用 JFrame 類的方法。setTitle() 方法用來設置窗口標題,setDefaultCloseOperation() 方法用來設置響應方式,即當單擊“關閉”按鈕時退出該程序。

在構造方法中使用 JLabel 類創建一個標簽對象 jl,其參數是標簽的文本提示信息。JFrame 框架的 getContentPane() 方法獲取了內容窗格對象,并使用 add() 方法將標簽添加到內容窗格上。最后的 setVisible() 方法是從父類中繼承的方法。

程序運行的窗口結果如圖 2 所示。

窗口運行結果
圖2 窗口運行結果

JPanel 面板

JPanel 是一種中間層容器,它能容納組件并將組件組合在一起,但它本身必須添加到其他容器中使用。JPanel 類的構造方法如下。
  • JPanel():使用默認的布局管理器創建新面板,默認的布局管理器為 FlowLayout。
  • JPanel(LayoutManagerLayout layout):創建指定布局管理器的 JPanel 對象。

JPanel 類的常用方法如表 2 所示。

表2 JPanel類的常用方法
方法名及返回值類型 說明
Component add(Component comp) 將指定的組件追加到此容器的尾部
void remove(Component comp) 從容器中移除指定的組件
void setFont(Font f) 設置容器的字體
void setLayout(LayoutManager mgr) 設置容器的布局管理器
void setBackground(Color c) 設置組件的背景色

例 2

編寫一個使用 JPanel 組件的窗口程序。要求設置標題為“Java的第二個GUI程序”,然后向窗口中添加一個面板,并設置面板上顯示的文本為“這是放在JPanel上的標簽”,設置面板背景顏色為白色。具體實現代碼如下:
package ch17;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import java.awt.*;
public class JPanelDemo
{   
    public static void main(String[] agrs)
    {
        JFrame jf=new JFrame("Java第二個GUI程序");    //創建一個JFrame對象
        jf.setBounds(300, 100, 400, 200);    //設置窗口大小和位置
        JPanel jp=new JPanel();    //創建一個JPanel對象
        JLabel jl=new JLabel("這是放在JPanel上的標簽");    //創建一個標簽
        jp.setBackground(Color.white);    //設置背景色
        jp.add(jl);    //將標簽添加到面板
        jf.add(jp);    //將面板添加到窗口
        jf.setVisible(true);    //設置窗口可見
    }
}

如上述代碼,首先創建了一個 JFrame 對象,并設置其大小和位置,然后創建了一個 JPanel對象表示面板,調用 setBackground() 方法設置面板的背景色為白色,調用 add() 方法將標簽添加到此面板。JFrame 類的 add() 方法將 JPanel 面板添加到 JFmme 窗口中。最后調用 setVisible() 方法將窗口設置為可見。

運行程序,顯示的窗口如圖 3 所示。

面板顯示效果
圖3 面板顯示效果
< 上一頁Swing簡介 Swing布局管理器下一頁 >

精美而實用的網站,提供C語言、C++、STL、Linux、Shell、Java、Go語言等教程,以及socket、GCC、vi、Swing、設計模式、JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo