1.Swing容器
頂層容器
在Swing中有三種可以使用的頂層容器 ,分別是JFrame , JDialog , JApplet
1.JFrame : 用於框架窗口的類,此窗口帶有邊框,標題,關閉和最小化窗口的圖標,帶GUI的應用程序至少使用一個框架窗口
2.JDialog :用於對話框的類
3.JApplet : 用於使用Swing組件的java Applet類
中間容器
中間容器時容器組件的一種 ,也可以承載其他組件 ,單中間容器不能獨立顯示 ,必須依賴於其他的頂層容器 , 常見的中間容器有Jpanel , JScrollpane , JTabbedPane和JToolBar
JPanel : 表示一個普通面板 ,是最靈活,最常用的中間容器
JScrollPane : 與JPanel類似 , 但他可在大的組件或可擴展組件周圍提供滾動條
JTabbedPane : 表示選項卡面板,可以包括多個組件,但一次只顯示一個組件 ,用於可在組件之間方便的切換
JToolBar : 表示工具欄 ,按行或列排列一組組件(通常是按鈕).
2.JFrame窗口
JFrame類的常用構造方法如下
JFrame() : 構造一個初始時不可見的新窗體
JFrame(String title) : 創建一個具有title指定標題的不可見新窗體
當創建一個 JFrame 類的實例化對象後,其他組件並不能夠直接放到容器上面,需要將組件添加至內容窗格,而不是直接添加至 JFrame 對象。示例代碼如下:
frame.getContentPane().add(b);
方法名稱 | 概述 |
---|---|
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 屬性 |
JFrame小實驗
package com.nantian.login;
import javax.swing.*;
import java.awt.*;
/**
* @Author
* @Date 2020/6/2 9:47
* @Version 1.0
*/
class JFrameDemo extends JFrame {
public JFrameDemo(){
setTitle("張氏管理集團");
setSize(400,200);
/*設置窗口是否可以關閉*/
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
/*創建一個標籤*/
JLabel jl = new JLabel("朕 ,必將無敵於天下");
/*獲取當前窗口的內容窗格*/
Container c = getContentPane();
c.add(jl);
setVisible(true);
}
public static void main(String[] args) {
/*創建一個實例化對象*/
new JFrameDemo();
}
}
3.JPanel面板
JPanel是一種中間層容器 , 他能容納組件並將組件結合在一起 , 但他本身必須添加到其他容器中使用 , 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) | 設置組件的背景色 |
小案例
public class JPanelDemo {
public static void main(String[] args) {
/*創建一個JFrame對象*/
JFrame jf = new JFrame("張氏JAVA帝國集團");
jf.setBounds(300,100,400,200);
JPanel jp = new JPanel();
JLabel jl = new JLabel("張氏帝國董事長");
//設置背景色
jp.setBackground(Color.green);
jp.add(jl);
jf.add(jp);
//設置窗口可見
jf.setVisible(true);
}
}
這段代碼的思路 : 創建三個對象
JFrame jf 最大的對象
JPanel jp 中間的對象
JLabel jL 最小的對象
把最小的對象添加到中間的對象
中間的對象添加到最大的對象
jp.add(jL) jf.add(jp)
需要設置一下最大對象的大小以及位置( jf.setBounds(300,100,400,200);)
設置一下中間對象的北京顏色 (jp.setBackground(Color.green);)
創建最小的對象的時候即可設置內容(JLabel jl = new JLabel("張氏帝國董事長張帥");)
最後額外設置一下窗體的可見性(jf.setVisible(true);)
4.邊框佈局管理器
BorderLayout (邊框佈局管理器)是window ,JFrame 和JDialog的默認佈局管理器 ,東南西北中
構造方法 :
BorderLayout佈局管理器的構造方法如下所示 :
BorderLayout() : 創建一個Border佈局 ,組件之間沒有間隙
BorderLayout(int hgap,int vgap) ; 創建一個Border佈局 ,其中hgap表示組件之間的橫向間隔 ,vgap表示組件之間的縱向間隔 , 單位是像素
小案例
public class BorderLayoutDemo {
public static void main(String[] args) {
JFrame frame = new JFrame("張氏帝國第三分集團");
/*首先來創建一個Frame窗口*/
frame.setSize(400,200);
/*爲Frame窗口設置佈局爲BorderLayout*/
frame.setLayout(new BorderLayout());
JButton button1 = new JButton("上");
JButton button2 = new JButton("左");
JButton button3 = new JButton("中");
JButton button4 = new JButton("右");
JButton button5 = new JButton("下");
frame.add(button1,BorderLayout.NORTH);
frame.add(button2,BorderLayout.WEST);
frame.add(button3,BorderLayout.CENTER);
frame.add(button4,BorderLayout.EAST);
frame.add(button5,BorderLayout.SOUTH);
frame.setBounds(300,200,600,300);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
代碼總結 :首先創建需要的組件 JFrame以及五個Button按鈕
設置一下frame的佈局方式 frame.setLayout(new BorderLayout());
然後把五個按鈕分別添加到frame裏,並且設置佈局方式
最後在設置一下就frame的窗體可以關閉 ,以及顯現窗體
5.流式佈局管理器
FlowLayout 佈局管理器的構造方法如下
FlowLayout():創建一個佈局管理器,使用默認的居中對齊方式和默認 5 像素的水平和垂直間隔。
FlowLayout(int align):創建一個佈局管理器,使用默認 5 像素的水平和垂直間隔。其中,align 表示組件的對齊方式,對齊的值必須是 FlowLayoutLEFT、FlowLayout.RIGHT 和 FlowLayout.CENTER,指定組件在這一行的位置是居左對齊、居右對齊或居中對齊。
FlowLayout(int align, int hgap,int vgap):創建一個佈局管理器,其中 align 表示組件的對齊方式;hgap 表示組件之間的橫向間隔;vgap 表示組件之間的縱向間隔,單位是像素。
創建一個窗口 ,設置標題爲"XXX" ,使用FlowLayout類對窗口進行佈局 ,向容器中添加九個按鈕 ,並且設置橫向和縱向的間隔都爲20像素 , 具體實現代碼如下 :
public class FlowLayoutDemo {
public static void main(String[] args) {
/*創建Frame窗口*/
JFrame jFrame = new JFrame("張氏第4集團軍");
/*創建面板*/
JPanel jPanel = new JPanel();
/*創建按鈕*/
JButton button1 = new JButton("1");
JButton button2 = new JButton("2");
JButton button3 = new JButton("3");
JButton button4 = new JButton("4");
JButton button5 = new JButton("5");
JButton button6 = new JButton("6");
JButton button7 = new JButton("7");
JButton button8 = new JButton("8");
JButton button9 = new JButton("9");
/*面板中添加按鈕*/
jPanel.add(button1);
jPanel.add(button2);
jPanel.add(button3);
jPanel.add(button4);
jPanel.add(button5);
jPanel.add(button6);
jPanel.add(button7);
jPanel.add(button8);
jPanel.add(button9);
/*向JPanel添加FlowLayout佈局管理器, 將組件鍵的橫向和縱向間隙都設置爲20像素 */
jPanel.setLayout(new FlowLayout(FlowLayout.LEADING,20,20));
//設置背景色
jPanel.setBackground(Color.RED);
jFrame.add(jPanel);
jFrame.setBounds(300,200,300,150);
jFrame.setVisible(true);
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}