JFrame窗口容器和JPanel面板容器
Java Swing中,任何一個Swing組件都需要置於一個頂層容器中。JFrame窗口和JPanel面板是常用的頂層容器。JFrame中的頂層容器主要有JFrame、JDialog 和 JApplet。
JFrame(窗口容器)
Java GUI程序基本思路是以JFrame為基礎,用來設計類似於Windows系統中窗口形式的界面,它是屏幕上window的對象,能夠最大化、最小化、關閉。JFrame是Swing組件的頂層容器,該類繼承了AWT的Frame類,支持Swing體系結構的高級GUI屬性。
JFrame類的常用構造方法如下:
構造函數 | 描述 |
---|---|
JFrame() | 構造一個初始時不可見的新窗體 |
JFrame(String title) | 創建一個具有title指定標題的不可見新窗體 |
JFrame(GraphicsConfiguration gc) | 在指定GraphicsConfiguration的屏幕設備和空白標題中創建一個新窗體 |
JFrame(String title, GraphicsConfiguration gc) | 創建具有指定標題和指定GraphicsConfiguration屏幕設備的新窗體 |
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屬性 |
Example:
1.使用JFrame無參構造方法創建一個窗口:
package com.tianjh.swing;
import javax.swing.*;
/**
* @author tianjh
* @date 2021/3/5
* 使用JFrame創建一個空窗口
*/
public class JFrameDemo {
public static void main(String[] args) {
JFrame jFrame = new JFrame();
// 設置窗口的標題
jFrame.setTitle("這是由JFrame無參構造創建的窗口");
// 設置窗口位置及尺寸
jFrame.setBounds(500, 500, 500, 275);
// 設置單擊“關閉”按鈕時退出程序
jFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
// 設置窗口是否可見,如果設置false或不設置那么窗口將不可見
jFrame.setVisible(true);
}
}
運行結果如下:
2.使用JFrame帶參構造方法創建一個窗口:
public class JFrameDemo {
public static void main(String[] args) {
// 創建一個帶有指定標題的jFrame對象
JFrame jFrame = new JFrame("這是由JFrame帶參構造創建的窗口");
// 設置窗口位置及尺寸
jFrame.setBounds(500, 500, 500, 275);
// 設置單擊“關閉”按鈕時退出程序
jFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
// 設置窗口是否可見,如果設置false或不設置那么窗口將不可見
jFrame.setVisible(true);
}
}
運行結果如下:
JPanel(面板容器)
JPanel是Java圖形用戶界面(GUI)工具包swing中的面板容器類,包含在javax.swing 包中,可以進行嵌套,功能是對窗體中具有相同邏輯功能的組件進行組合,是一種輕量級容器,可以加入到JFrame窗體中。
JPanel類的常用構造方法如下:
構造函數 | 描述 |
---|---|
JPanel() | 使用默認的布局管理器創建新面板,默認的布局管理器為 FlowLayout |
JPanel(LayoutManagerLayout layout) | 創建指定布局管理器的 JPanel 對象 |
JPanel 類中的常用方法如下:
方法名及返回值類型 | 描述 |
---|---|
Component add(Component comp) | 將指定的組件追加到此容器的尾部 |
void remove(Component comp) | 從容器中移除指定的組件 |
void setFont(Font f) | 設置容器的字體 |
void setLayout(LayoutManager mgr) | 設置容器的布局管理器 |
void setBackground(Color c) | 設置組件的背景色 |
Example:
3.使用JPanel創建一個背景為橘色的面板
package com.tianjh.swing;
import javax.swing.*;
import java.awt.*;
/**
* @author tianjh
* @date 2021/3/5
*/
public class JPanelDemo {
public static void main(String[] args) {
JFrame jFrame = new JFrame();
jFrame.setTitle("使用JPanel創建一個背景為橘色的面板");
// 設置窗口位置及尺寸
jFrame.setBounds(500,500,500,275);
// 設置單擊“關閉”按鈕時退出程序
jFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
// 創建面板
JPanel jPanel = new JPanel();
// 設置面板背景為橘色
jPanel.setBackground(Color.orange);
// 將面板添加到jFrame
jFrame.add(jPanel);
// 設置窗口是否可見,如果設置false或不設置那么窗口將不可見
jFrame.setVisible(true);
}
}
運行結果如下: