Java圖形界面GUI布局方式(小結(jié))
流式布局
采用流式布局會將元素按從左到右的順序排列,如果一個元素在一行中放不下,那這個元素會另起一行依然按照從左到右的順序排列
示例:

代碼
public class Test {
public static void main(String[] args) {
// 創(chuàng)建窗口
JFrame jFrame = new JFrame();
// 設(shè)置窗口名稱
jFrame.setTitle("hello");
// 創(chuàng)建流式布局管理器 對齊方式為左對齊
LayoutManager layout = new FlowLayout(FlowLayout.LEFT);
// 關(guān)閉窗口結(jié)束程序
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 創(chuàng)建內(nèi)容面板
Container contentpage = jFrame.getContentPane();
// 設(shè)置內(nèi)容面板布局方式為流布局
contentpage.setLayout(layout);
// 創(chuàng)建按鈕
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");
// 設(shè)置按鈕大小
button1.setPreferredSize(new Dimension(100,100));
button2.setPreferredSize(new Dimension(100,100));
button3.setPreferredSize(new Dimension(100,100));
button4.setPreferredSize(new Dimension(100,100));
button5.setPreferredSize(new Dimension(100,100));
// 設(shè)置按鈕背景顏色
button1.setBackground(Color.red);
button2.setBackground(Color.blue);
button3.setBackground(Color.pink);
button4.setBackground(Color.orange);
button5.setBackground(Color.yellow);
// 將按鈕添加到內(nèi)容面板中
contentpage.add(button1);
contentpage.add(button2);
contentpage.add(button3);
contentpage.add(button4);
contentpage.add(button5);
// 設(shè)置窗口大小
jFrame.setSize(500, 300);
// 設(shè)置窗口可見
jFrame.setVisible(true);
}
}
邊界布局
采用邊界布局會將元素分別劃分到東,西,中,南,北五個方位,分別使用EAST,WEST,CENTER,SOUTH,NORTH標(biāo)識,每個方位只能放一個元素
示例

代碼
public class Test {
public static void main(String[] args) {
// 創(chuàng)建窗口
JFrame jFrame = new JFrame();
// 設(shè)置窗口名稱
jFrame.setTitle("hello");
// 創(chuàng)建邊界布局管理器
BorderLayout layout = new BorderLayout();
// 關(guān)閉窗口結(jié)束程序
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 創(chuàng)建內(nèi)容面板
Container contentpage = jFrame.getContentPane();
// 設(shè)置內(nèi)容面板布局方式為流布局
contentpage.setLayout(layout);
// 創(chuàng)建按鈕
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");
// 設(shè)置按鈕背景顏色
button1.setBackground(Color.red);
button2.setBackground(Color.blue);
button3.setBackground(Color.pink);
button4.setBackground(Color.orange);
button5.setBackground(Color.yellow);
// 將按鈕添加到內(nèi)容面板中
// 將按鈕放置到北部
contentpage.add(button1,BorderLayout.NORTH);
// 將按鈕放置到南部
contentpage.add(button2,BorderLayout.SOUTH);
// 將按鈕放置到西部
contentpage.add(button3,BorderLayout.WEST);
// 將按鈕放置到東部
contentpage.add(button4,BorderLayout.EAST);
// 將按鈕放置到中心
contentpage.add(button5,BorderLayout.CENTER);
// 設(shè)置窗口大小
jFrame.setSize(500, 300);
// 設(shè)置窗口可見
jFrame.setVisible(true);
}
}
卡片布局
顧名思義,若一個容器使用卡片布局,其里面的所有組件就像是一副牌一樣重疊在一起,容器只能顯示一個組件,默認(rèn)顯示第一個組件,可以通過CardLayout中的show方法改變顯示的組件
示例
顯示第一個按鈕

顯示第二個按鈕

代碼
public class Test {
public static void main(String[] args) {
// 創(chuàng)建窗口
JFrame jFrame = new JFrame();
// 設(shè)置窗口名稱
jFrame.setTitle("hello");
// 創(chuàng)建卡片布局管理器
CardLayout layout = new CardLayout();
// 關(guān)閉窗口結(jié)束程序
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 創(chuàng)建面板
JPanel jPanel = new JPanel();
// 設(shè)置面板布局方式為卡片布局
jPanel.setLayout(layout);
// 添加 按鈕 設(shè)置背景顏色
JButton jButton1 = new JButton();
jButton1.setBackground(Color.pink);
JButton jButton2 = new JButton();
jButton2.setBackground(Color.yellow);
// 將按鈕添加到面板中并對按鈕進(jìn)行命名
jPanel.add(jButton1,"bt1");
jPanel.add(jButton2,"bt2");
// 指定在面板上顯示的按鈕
layout.show(jPanel, "bt2");
// 將面板添加到窗口中
jFrame.add(jPanel);
// 設(shè)置窗口大小
jFrame.setSize(500,300);
// 設(shè)置窗口可見
jFrame.setVisible(true);
}
}
自定義布局
所謂自定義布局就是不使用任何布局管理器,而是我們自己通過指定組件的X坐標(biāo),Y坐標(biāo),寬度,高度來指定組件的位置
這里的坐標(biāo)和我們平時的坐標(biāo)有些區(qū)別,如下:

組件是以左上角頂點(diǎn)為原點(diǎn)來定位坐標(biāo),使用自定義布局,要將容器使用的布局管理器設(shè)置為null
那有的小伙伴會問了,既然布局管理器設(shè)置為null,那可不可以直接不設(shè)置啊,當(dāng)然不行,如果不設(shè)置的話,組件會不顯示
示例

代碼
public class Test {
public static void main(String[] args) {
// 創(chuàng)建窗口
JFrame jFrame = new JFrame();
// 設(shè)置窗口名稱
jFrame.setTitle("hello");
// 關(guān)閉窗口同時結(jié)束程序
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 創(chuàng)建面板
JPanel jPanel = new JPanel();
// 使用自定義布局,將容器使用的布局管理器設(shè)置為null
jPanel.setLayout(null);
// 添加 按鈕 設(shè)置背景顏色
JButton jButton1 = new JButton();
jButton1.setBackground(Color.pink);
JButton jButton2 = new JButton();
jButton2.setBackground(Color.yellow);
// 設(shè)置按鈕的坐標(biāo)為(100,100) ,寬度為100,高度為100
jButton1.setBounds(new Rectangle(100,100,100,100));
// 設(shè)置按鈕的坐標(biāo)為(220,70) ,寬度為100,高度為100
jButton2.setBounds(new Rectangle(220,70,100,100));
// 將按鈕添加到面板中
jPanel.add(jButton1);
jPanel.add(jButton2);
// 將面板添加到窗口中
jFrame.add(jPanel);
// 設(shè)置窗口大小
jFrame.setSize(500,300);
// 設(shè)置窗口可見
jFrame.setVisible(true);
}
}
到此這篇關(guān)于Java圖形界面GUI布局方式(小結(jié))的文章就介紹到這了,更多相關(guān)Java GUI布局內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java?-jar參數(shù)詳解之掌握J(rèn)ava可執(zhí)行JAR文件的運(yùn)行技巧
做項(xiàng)目的時候我們肯定接觸過很多jar包,下面這篇文章主要給大家介紹了關(guān)于Java?-jar參數(shù)詳解之掌握J(rèn)ava可執(zhí)行JAR文件的運(yùn)行技巧,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-11-11
解析Linux系統(tǒng)中JVM內(nèi)存2GB上限的詳解
本篇文章是對Linux系統(tǒng)中JVM內(nèi)存2GB上限進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
Maven多模塊之父子關(guān)系的創(chuàng)建
這篇文章主要介紹了Maven多模塊之父子關(guān)系的創(chuàng)建,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
Java Socket實(shí)現(xiàn)UDP編程淺析
類 DatagramSocket 何 DatagramPacket(數(shù)據(jù)包/數(shù)據(jù)報) 實(shí)現(xiàn)了基于 UDP協(xié)議網(wǎng)絡(luò)程序;UDP數(shù)據(jù)報通過數(shù)據(jù)報套接字 DatagramSocket 發(fā)送和接收,系統(tǒng)不保證 UDP數(shù)據(jù)報一定能夠安全送達(dá)目的地,也不確定什么時候可以抵達(dá)2022-11-11
SpringMVC處理器映射器HandlerMapping詳解
這篇文章主要介紹了SpringMVC處理器映射器HandlerMapping詳解,在SpringMVC中會有很多請求,每個請求都需要一個HandlerAdapter處理,具體接收到一個請求之后使用哪個HandlerAdapter進(jìn)行處理呢,他們的過程是什么,需要的朋友可以參考下2023-09-09
如何使用Spring Batch進(jìn)行批處理任務(wù)管理
本文介紹了如何配置Spring Batch、如何創(chuàng)建批處理任務(wù),以及如何讀取和寫入數(shù)據(jù),希望通過本文的介紹,你能更好地理解和使用Spring Batch來管理批處理任務(wù),感興趣的朋友跟隨小編一起看看吧2024-08-08
Spring Boot2發(fā)布調(diào)用REST服務(wù)實(shí)現(xiàn)方法
這篇文章主要介紹了Spring Boot2發(fā)布調(diào)用REST服務(wù)實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-04-04

