国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

上海網(wǎng)站開發(fā)建優(yōu)秀的軟文廣告案例

上海網(wǎng)站開發(fā)建,優(yōu)秀的軟文廣告案例,網(wǎng)站建設(shè)公司 提成,嘉興網(wǎng)站制作案例文章目錄 一、布局管理器引入二、布局管理器提高程序的適配性三、LayoutManager 布局管理器類四、FlowLayout 流式布局五、FlowLayout 流式布局 API六、FlowLayout 流式布局代碼示例1、FlowLayout 流式布局左對(duì)齊代碼示例及執(zhí)行效果2、FlowLayout 流式布局居中對(duì)齊代碼示例及執(zhí)…

文章目錄

  • 一、布局管理器引入
  • 二、布局管理器提高程序的適配性
  • 三、LayoutManager 布局管理器類
  • 四、FlowLayout 流式布局
  • 五、FlowLayout 流式布局 API
  • 六、FlowLayout 流式布局代碼示例
    • 1、FlowLayout 流式布局左對(duì)齊代碼示例及執(zhí)行效果
    • 2、FlowLayout 流式布局居中對(duì)齊代碼示例及執(zhí)行效果
    • 2、FlowLayout 流式布局右對(duì)齊代碼示例及執(zhí)行效果
  • 七、BorderLayout 布局
  • 八、BorderLayout 構(gòu)造函數(shù) API
  • 九、BorderLayout 代碼示例
    • 1、BorderLayout 基本用法代碼示例
    • 2、BorderLayout 區(qū)域占用代碼示例
    • 3、BorderLayout 同一區(qū)域顯示多個(gè)組件代碼示例
  • 十、GridLayout 網(wǎng)格布局
  • 十一、GridLayout 構(gòu)造函數(shù)
  • 十二、GridLayout 網(wǎng)格布局代碼示例
  • 十三、GridBagLayout 網(wǎng)格包布局
  • 十四、CardLayout 卡片布局
  • 十五、CardLayout 卡片布局 API
  • 十六、CardLayout 卡片布局代碼示例
  • 十七、BoxLayout 布局
  • 十八、BoxLayout 布局 API
  • 十九、BoxLayout 布局代碼示例
    • 1、BoxLayout 布局垂直排列代碼示例
    • 2、BoxLayout 布局水平排列代碼示例
  • 二十、Box 容器
  • 二十一、Box 容器 API
  • 二十二、Box 容器代碼示例
  • 二十三、Box 容器中添加分割





一、布局管理器引入



在上一篇博客 【Java AWT 圖形界面編程】Container 容器 ③ ( ScrollPane 可滾動(dòng)容器示例 ) 中 , 向 ScrollPan 中添加了 TextField 文本框 和 Button 按鈕 , 但是顯示的時(shí)候效果如下 :
在這里插入圖片描述

只顯示了一個(gè)按鈕 , 這是由于 ScrollPan 默認(rèn)的 LayoutManager 布局管理器 導(dǎo)致的 ;





二、布局管理器提高程序的適配性



在界面中 添加一個(gè) Button 按鈕組件 , 可以 調(diào)用 Component 組件的 setBounds 函數(shù) , 手動(dòng)為其設(shè)置 位置 和 大小 ,

手動(dòng)設(shè)置寬高大小的像素值后 , 會(huì)造成 程序在不同平臺(tái)的適配問題 , 如 : 在 Windows 中設(shè)置 100 px 的效果 , 與 在 Linux 中設(shè)置 200 px 的效果正好合適 ;

如果手動(dòng)設(shè)置了組件的 寬高 , 位置 等精確的像素值 , 那么會(huì) 降低程序的適配效果 , 此時(shí)就需要在 Windows 下寫一套程序 , 在 Linux 下寫一套程序 ;


LayoutManager 布局管理器 可以根據(jù)不同的操作系統(tǒng) , 自動(dòng)調(diào)整組件的位置和大小 ;





三、LayoutManager 布局管理器類



LayoutManager 布局管理器類 :

  • LayoutManager 接口
    • GridLayout 網(wǎng)格布局
    • FlowLayout 流式布局
  • LayoutManager2 接口
    • CardLayout 卡片布局
    • GridBagLayout 網(wǎng)個(gè)包布局
    • BorderLayout 邊框布局

不同的布局管理器 , 對(duì)多個(gè)組件的展示效果不同 ;





四、FlowLayout 流式布局



FlowLayout 流式布局 中 , 組件 按照某個(gè)方向進(jìn)行排列 , 如 :

  • 從左到右
  • 從右到左
  • 從中間到兩邊

如果 遇到障礙 或者 走到界面邊界 ,

返回到開始位置 , 在下一行從頭繼續(xù)按照原方向進(jìn)行排列 ;


如 : 下面的布局就是從左向右的流式布局 , 將 6 個(gè)組件放在 FlowLayout 流式布局中 ,
1 , 2 , 3 組件放入后 , 再 放入 4 組件 , 發(fā)現(xiàn)第 1 排位置不夠了 , 遇到障礙 ,
此時(shí)折 返回左側(cè) , 另起一行 , 在第 2 排繼續(xù)從左到右排列 ;

在這里插入圖片描述





五、FlowLayout 流式布局 API



FlowLayout 構(gòu)造函數(shù) :

  • FlowLayout() 構(gòu)造函數(shù) : 使用 默認(rèn)的 對(duì)齊方式 , 默認(rèn)的 垂直間距 和 水平間距 , 創(chuàng)建流式布局 ;
    /*** 構(gòu)造一個(gè)新的<code>FlowLayout</code>,具有居中對(duì)齊和* 默認(rèn)水平和垂直間隔為5單元。*/public FlowLayout() {this(CENTER, 5, 5);}
  • FlowLayout(int align) 構(gòu)造函數(shù) : 使用 指定的 對(duì)齊方式 , 默認(rèn)的 垂直間距 和 水平間距 , 創(chuàng)建流式布局 ;
    /*** 構(gòu)造一個(gè)新的<code>FlowLayout</code>* 對(duì)齊和默認(rèn)的5單元水平和垂直差距。* 對(duì)齊參數(shù)的值必須為之一* <code>FlowLayout.LEFT</code>, <code>FlowLayout.RIGHT</code>,* <code>FlowLayout.CENTER</code>, <code>FlowLayout.LEADING</code>,* or <code>FlowLayout.TRAILING</code>.* @param align 對(duì)齊值*/public FlowLayout(int align) {this(align, 5, 5);}
  • FlowLayout(int align, int hgap, int vgap) 構(gòu)造函數(shù) : 使用 指定的 對(duì)齊方式 , 指定的 垂直間距 和 水平間距 , 創(chuàng)建流式布局 ;
    /*** 使用指定的對(duì)齊方式創(chuàng)建一個(gè)新的流布局管理器* 以及指示的水平和垂直間隙。* <p>* 對(duì)齊參數(shù)的值必須為之一* <code>FlowLayout.LEFT</code>, <code>FlowLayout.RIGHT</code>,* <code>FlowLayout.CENTER</code>, <code>FlowLayout.LEADING</code>,* or <code>FlowLayout.TRAILING</code>.* @param      align   對(duì)齊值* @param      hgap    各組件之間的水平間隙*                     在分量和*                     <code>Container</code>的邊界* @param      vgap    組件之間的垂直間隙*                     在分量和*                     <code>Container</code>的邊界*/public FlowLayout(int align, int hgap, int vgap) {this.hgap = hgap;this.vgap = vgap;setAlignment(align);}




六、FlowLayout 流式布局代碼示例



Frame 是 Window 子類 , 是 界面中窗口 , 其 默認(rèn)的布局管理器是 BorderLayout 布局管理器 ,

通過 調(diào)用 Container#setLayout 函數(shù) 可以手動(dòng)修改 容器的布局管理器 ;


1、FlowLayout 流式布局左對(duì)齊代碼示例及執(zhí)行效果


代碼示例 :

import java.awt.*;public class HelloAWT {public static void main(String[] args) {Frame frame = new Frame("AWT 界面編程");// 創(chuàng)建流式布局// 布局中的組件從左到右進(jìn)行排列// 水平間隔 10 像素, 垂直間隔 10 像素FlowLayout flowLayout = new FlowLayout(FlowLayout.LEFT, 10, 10);// Frame 容器設(shè)置流式布局frame.setLayout(flowLayout);frame.setBounds(0, 0, 800, 500);// 添加多個(gè)組件for (int i = 0; i < 50; i ++) {Button button = new Button("按鈕 " + i);frame.add(button);}frame.setVisible(true);}
}

執(zhí)行結(jié)果 : 這是左對(duì)齊的模式 ;

在這里插入圖片描述


2、FlowLayout 流式布局居中對(duì)齊代碼示例及執(zhí)行效果


居中對(duì)齊代碼示例 :

import java.awt.*;public class HelloAWT {public static void main(String[] args) {Frame frame = new Frame("AWT 界面編程");// 創(chuàng)建流式布局// 布局中的組件從左到右進(jìn)行排列// 水平間隔 10 像素, 垂直間隔 10 像素FlowLayout flowLayout = new FlowLayout(FlowLayout.CENTER, 10, 10);// Frame 容器設(shè)置流式布局frame.setLayout(flowLayout);frame.setBounds(0, 0, 800, 500);// 添加多個(gè)組件for (int i = 0; i < 50; i ++) {Button button = new Button("按鈕 " + i);frame.add(button);}frame.setVisible(true);}
}

執(zhí)行效果 :

在這里插入圖片描述


2、FlowLayout 流式布局右對(duì)齊代碼示例及執(zhí)行效果


代碼示例 :

import java.awt.*;public class HelloAWT {public static void main(String[] args) {Frame frame = new Frame("AWT 界面編程");// 創(chuàng)建流式布局// 布局中的組件從左到右進(jìn)行排列// 水平間隔 10 像素, 垂直間隔 10 像素FlowLayout flowLayout = new FlowLayout(FlowLayout.RIGHT, 10, 10);// Frame 容器設(shè)置流式布局frame.setLayout(flowLayout);frame.setBounds(0, 0, 800, 500);// 添加多個(gè)組件for (int i = 0; i < 50; i ++) {Button button = new Button("按鈕 " + i);frame.add(button);}frame.setVisible(true);}
}

執(zhí)行效果 :

在這里插入圖片描述





七、BorderLayout 布局



BorderLayout 布局Container 容器 分割成 5 個(gè)部分 , 分別是 :

  • WEST
  • NORTH
  • EAST
  • SOUTH
  • CENTER

每個(gè)部分的位置如下圖所示 :

在這里插入圖片描述

修改 使用了 BorderLayout 布局 的 Container 容器的大小時(shí) :

  • 水平調(diào)整 : NORTH , SOUTH , CENTER 部分可以進(jìn)行 水平調(diào)整 ;
  • 垂直調(diào)整 : EAST , WEST , CENTER 部分可以進(jìn)行 垂直調(diào)整 ;

也就是說 , 調(diào)整容器大小時(shí) ,

  • NORTH 和 SOUTH 的高度是不變的 , 寬度可以改變 ;
  • EAST 和 WEST 的寬度是不變的 , 高度可以改變 ;
  • CENTER 區(qū)域的寬高都可以改變 ;

向 BorderLayout 布局 中添加 Component 組件 :

  • 組件添加區(qū)域 : 可以 指定添加的區(qū)域 , 如果沒有指定則默認(rèn)添加到 CENTER 區(qū)域 ;
  • 組件覆蓋 : 向同一個(gè)區(qū)域添加組件 , 后放入的組件會(huì)覆蓋先放入的組件 ;




八、BorderLayout 構(gòu)造函數(shù) API



BorderLayout 構(gòu)造函數(shù) API :

  • BorderLayout() : 創(chuàng)建 BorderLayout 布局管理器 , 使用 默認(rèn)的 水平間距 和 垂直間距 ;
    /*** 構(gòu)造一個(gè)新的邊框布局* 組件之間無間隙。*/public BorderLayout() {this(0, 0);}
  • BorderLayout() : 創(chuàng)建 BorderLayout 布局管理器 , 使用 指定的 水平間距 和 垂直間距 ;
    /*** 構(gòu)造具有指定間距的邊框布局* 組件之間。* 水平間隔由<code>hgap</code>指定* 垂直間隔由<code>vgap</code>指定。* @param   hgap   水平間隙。* @param   vgap   垂直間隙。*/public BorderLayout(int hgap, int vgap) {this.hgap = hgap;this.vgap = vgap;}




九、BorderLayout 代碼示例




1、BorderLayout 基本用法代碼示例


代碼示例 :

import java.awt.*;public class HelloAWT {public static void main(String[] args) {Frame frame = new Frame("AWT 界面編程");// 創(chuàng)建 BorderLayout 布局管理器// 指定水平間距 50, 垂直間距 30BorderLayout borderLayout = new BorderLayout(50, 30);// Frame 容器設(shè)置流式布局frame.setLayout(borderLayout);// 添加多個(gè)組件frame.add(new Button("WEST"), BorderLayout.WEST);frame.add(new Button("NORTH"), BorderLayout.NORTH);frame.add(new Button("EAST"), BorderLayout.EAST);frame.add(new Button("SOUTH"), BorderLayout.SOUTH);frame.add(new Button("CENTER"), BorderLayout.CENTER);// 自定設(shè)置合適的大小frame.pack();frame.setVisible(true);}
}

執(zhí)行效果 :

在這里插入圖片描述

拖動(dòng)改變?cè)摯翱诘拇笮?, 發(fā)現(xiàn) NORTH 和 SOUTH 的高度是不變的 , EAST 和 WEST 的寬度是不變的 ;
在這里插入圖片描述


2、BorderLayout 區(qū)域占用代碼示例


代碼示例 :

import java.awt.*;public class HelloAWT {public static void main(String[] args) {Frame frame = new Frame("AWT 界面編程");// 創(chuàng)建 BorderLayout 布局管理器// 指定水平間距 50, 垂直間距 30BorderLayout borderLayout = new BorderLayout(50, 30);// Frame 容器設(shè)置流式布局frame.setLayout(borderLayout);// 添加多個(gè)組件// 如果不向 EAST 和 WEST 中添加組件, 則該區(qū)域會(huì)被其它區(qū)域占用// 這里是被 CENTER 區(qū)域占用frame.add(new Button("NORTH"), BorderLayout.NORTH);frame.add(new Button("SOUTH"), BorderLayout.SOUTH);frame.add(new Button("CENTER"), BorderLayout.CENTER);// 自定設(shè)置合適的大小frame.pack();frame.setVisible(true);}
}

執(zhí)行結(jié)果 :
在這里插入圖片描述


3、BorderLayout 同一區(qū)域顯示多個(gè)組件代碼示例


代碼示例 :

import java.awt.*;public class HelloAWT {public static void main(String[] args) {Frame frame = new Frame("AWT 界面編程");// 創(chuàng)建 BorderLayout 布局管理器// 指定水平間距 50, 垂直間距 30BorderLayout borderLayout = new BorderLayout(50, 30);// Frame 容器設(shè)置流式布局frame.setLayout(borderLayout);// 添加多個(gè)組件// 如果不向 EAST 和 WEST 中添加組件, 則該區(qū)域會(huì)被其它區(qū)域占用// 這里是被 CENTER 區(qū)域占用frame.add(new Button("NORTH"), BorderLayout.NORTH);frame.add(new Button("SOUTH"), BorderLayout.SOUTH);frame.add(new Button("CENTER"), BorderLayout.CENTER);// 向默認(rèn)區(qū)域添加多個(gè)組件Panel panel = new Panel();panel.add(new Button("按鈕1"));panel.add(new Button("按鈕2"));frame.add(panel);// 自定設(shè)置合適的大小frame.pack();frame.setVisible(true);}
}

執(zhí)行結(jié)果 :
在這里插入圖片描述





十、GridLayout 網(wǎng)格布局



GridLayout 網(wǎng)格布局管理器 可以將 當(dāng)前的 Container 容器 劃分成 網(wǎng)格 , 每個(gè)網(wǎng)格 區(qū)域 相同 ;

向 使用了 GridLayout 網(wǎng)格布局管理器 的 Container 容器 中添加 Component 組件時(shí) , 默認(rèn)的添加順序是 從左到右 , 從上到下 ;

放置在 GridLayout 網(wǎng)格中的組件 , 組件的大小由網(wǎng)格的區(qū)域大小決定 , 默認(rèn)情況下 組件會(huì)填充滿所在的單個(gè)網(wǎng)格區(qū)域 ;





十一、GridLayout 構(gòu)造函數(shù)



GridLayout 構(gòu)造函數(shù) :

  • GridLayout() : 單行網(wǎng)格布局 ;
    /*** 創(chuàng)建一個(gè)默認(rèn)為每個(gè)組件一列的網(wǎng)格布局,* 在單行中。* @since JDK1.1*/public GridLayout() {this(1, 0, 0, 0);}
  • GridLayout(int rows, int cols) : 網(wǎng)格布局 中的 行數(shù) 和 列數(shù) 使用指定的值 , 網(wǎng)格的 水平 和 垂直 間隔使用默認(rèn)值 ;
    /*** 創(chuàng)建具有指定行數(shù)和的網(wǎng)格布局* 列。布局中的所有組件都被賦予相同的大小。* <p>* <code>rows</code>和<code>cols</code>中的一個(gè)(而不是兩個(gè))可以* 為零,這意味著任何數(shù)量的物體都可以放置在行或列。* @param     rows   值為0的行表示*                   任意數(shù)量的行。* @param     cols   列,值為0表示*                   任意數(shù)量的列。*/public GridLayout(int rows, int cols) {this(rows, cols, 0, 0);}
  • GridLayout(int rows, int cols, int hgap, int vgap) : 網(wǎng)格布局 中的 行數(shù) 和 列數(shù) 使用指定的值 , 網(wǎng)格的 水平 和 垂直 間隔使用指定的值 ;
    /*** 創(chuàng)建具有指定行數(shù)和的網(wǎng)格布局* 列。布局中的所有組件都被賦予相同的大小。* < p >* 此外,水平和垂直間隙設(shè)置為* 指定的值。水平間隔放置在每個(gè)之間* 列的。垂直的間隙被放置在每一個(gè)之間* 行。* < p >* <code>行</code>和<code>cols</code>中的一個(gè)(而不是兩個(gè))可以* 為零,這意味著任何數(shù)量的物體都可以放置在* 行或列。* < p >* 所有<code>GridLayout</code>構(gòu)造函數(shù)都遵循此構(gòu)造函數(shù)。* @param     rows   值為0的行表示*                   任意數(shù)量的行* @param     cols   列,值為0表示*                   任意數(shù)量的列* @param     hgap   水平間隙* @param     vgap   垂直差距* @exception   IllegalArgumentException  if the value of both*                  <code>rows</code> and <code>cols</code> is*                  set to zero*/public GridLayout(int rows, int cols, int hgap, int vgap) {if ((rows == 0) && (cols == 0)) {throw new IllegalArgumentException("rows and cols cannot both be zero");}this.rows = rows;this.cols = cols;this.hgap = hgap;this.vgap = vgap;}




十二、GridLayout 網(wǎng)格布局代碼示例



代碼示例 :

import java.awt.*;public class HelloAWT {public static void main(String[] args) {// Frame 默認(rèn)的布局管理器就是 BorderLayoutFrame frame = new Frame("AWT 界面編程");// 用于存放 文本框Panel panel = new Panel();// 該文本框可以存放 30 個(gè)字符TextField textField = new TextField(30);panel.add(textField);frame.add(panel, BorderLayout.NORTH);// 用于存放 網(wǎng)格布局中的組件// 需要設(shè)置該容器的 布局管理器為 網(wǎng)格布局管理器Panel panel2 = new Panel();panel2.setLayout(new GridLayout(3, 5, 4, 4));for (int i = 0; i < 10; i++) {panel2.add(new Button(i + ""));}panel2.add(new Button("+"));panel2.add(new Button("-"));panel2.add(new Button("*"));panel2.add(new Button("/"));panel2.add(new Button("="));frame.add(panel2, BorderLayout.CENTER);// 自定設(shè)置合適的大小frame.pack();frame.setVisible(true);}
}

執(zhí)行結(jié)果 :

在這里插入圖片描述





十三、GridBagLayout 網(wǎng)格包布局



GridBagLayout 網(wǎng)格包布局 , 是在 GridLayout 網(wǎng)格布局的基礎(chǔ)上 , 單個(gè)組件可以占用多個(gè)網(wǎng)格 , 占用的多個(gè)網(wǎng)格的大小形狀也可以任意設(shè)置 , 每個(gè)組件都可以占用多行和多列的網(wǎng)格 , 即 m x n 大小的網(wǎng)格 , 如 : 占用 1 x 2 的網(wǎng)格 , 占用 3 x 4 的網(wǎng)格 ;

如果 GridBagLayout 網(wǎng)格包布局所在的 窗口 大小改變 , 對(duì)應(yīng)的 網(wǎng)格 也會(huì)被 拉伸或壓縮 ;

向 使用 GridBagLayout 網(wǎng)格包布局 的 Container 容器中 添加 Component 組件時(shí) , 需要指定添加的 組件具體占的 網(wǎng)格 行列數(shù) ; 可借助 GridBagConstaints 配置 組件 的 行列大小 ;





十四、CardLayout 卡片布局



CardLayout 卡片布局 中 , Container 容器中 每個(gè)組件都相當(dāng)于一張卡片 , 這些卡片平時(shí)都折疊起來 , 只有 最上面的卡片中的組件才是可見的 , 其它組件都不可見 ;





十五、CardLayout 卡片布局 API



CardLayout 卡片布局 API :

  • CardLayout() : 創(chuàng)建 默認(rèn) 的卡片布局管理器 ;
    /*** 創(chuàng)建一個(gè)空白大小為0的新卡片布局。*/public CardLayout() {this(0, 0);}
  • CardLayout(int hgap, int vgap) : 創(chuàng)建 指定 水平間隙 和 垂直間隙 的 卡片布局管理器 ;
    /*** 創(chuàng)建具有指定水平和的新卡片布局* 垂直差異。水平的空隙放在左邊和* 正確的邊緣。垂直的縫隙位于頂部和底部* 邊緣。* @param     hgap   水平間隙??ㄆc左右兩邊的間距* @param     vgap   垂直間隙??ㄆc上下兩邊的間距*/public CardLayout(int hgap, int vgap) {this.hgap = hgap;this.vgap = vgap;}
  • void first(Container parent) : 顯示 目標(biāo)容器 中的 第一張卡片 ;
    /*** 翻轉(zhuǎn)到容器的第一張卡片。* @param     parent   要在其中進(jìn)行布局的父容器* @see       java.awt.CardLayout#last*/public void first(Container parent)
  • void last(Container parent) : 顯示 目標(biāo)容器 中的 最后一張卡片 ;
    /*** 翻轉(zhuǎn)到容器的最后一張牌。* @param     parent   要在其中進(jìn)行布局的父容器* @see       java.awt.CardLayout#first*/public void last(Container parent)
  • void previous(Container parent) : 顯示 目標(biāo)容器 中的 前一張卡片 ;
    /*** 翻轉(zhuǎn)到指定容器的上一張卡片。如果* 目前可見的卡片是第一張,這個(gè)方法翻到* 布局的最后一張牌。* @param     parent   要在其中進(jìn)行布局的父容器* @see       java.awt.CardLayout#next*/public void previous(Container parent)
  • void next(Container parent) : 顯示 目標(biāo)容器 中的 后一張卡片 ;
    /*** 翻轉(zhuǎn)到指定容器的下一張牌。如果* 目前可見的卡片是最后一張,此方法翻到* 布局中的第一張牌。* @param     parent   要在其中進(jìn)行布局的父容器* @see       java.awt.CardLayout#previous*/public void next(Container parent)
  • void show(Container parent, String name) : 顯示 目標(biāo)容器 中的 指定名稱的 卡片 ;
    /*** 控件跳轉(zhuǎn)到添加到此布局中的組件* 指定<code>name</code>,使用<code>addLayoutComponent</code>。* 如果不存在這樣的組件,那么什么也不會(huì)發(fā)生。* @param     parent   要在其中進(jìn)行布局的父容器* @param     name     組件名稱* @see       java.awt.CardLayout#addLayoutComponent(java.awt.Component, java.lang.Object)*/public void show(Container parent, String name)




十六、CardLayout 卡片布局代碼示例



代碼示例 :

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;public class HelloAWT {public static void main(String[] args) {// I. Frame 默認(rèn)的布局管理器就是 BorderLayoutFrame frame = new Frame("AWT 界面編程");// II. 設(shè)置存儲(chǔ)卡片布局的 Panel// 該容器設(shè)置 卡片布局管理器Panel panel = new Panel();CardLayout cardLayout = new CardLayout();panel.setLayout(cardLayout);// 向 Panel 中添加多個(gè) 卡片組件for (int i = 0; i < 5; i++) {panel.add("" + i, new Button("" + i));}// 將 Panel 放到 Frame 窗口的默認(rèn)區(qū)域 , 也就是 Center 區(qū)域frame.add(panel);// III. 創(chuàng)建 存放 按鈕的 Panel 容器Panel panel2 = new Panel();Button b0 = new Button("first");Button b1 = new Button("last");Button b2 = new Button("previous");Button b3 = new Button("next");Button b4 = new Button("second");// 設(shè)置按鈕事件監(jiān)聽器ActionListener listener = new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// 獲取按鈕文字String text = e.getActionCommand();switch (text) {case "first":cardLayout.first(panel);break;case "last":cardLayout.last(panel);break;case "previous":cardLayout.previous(panel);break;case "next":cardLayout.next(panel);break;case "second":cardLayout.show(panel, "2");break;}}};// 為按鈕設(shè)置監(jiān)聽器b0.addActionListener(listener);b1.addActionListener(listener);b2.addActionListener(listener);b3.addActionListener(listener);b4.addActionListener(listener);// 將按鈕設(shè)置到布局中panel2.add(b0);panel2.add(b1);panel2.add(b2);panel2.add(b3);panel2.add(b4);// 將按鈕布局添加到 Frame 窗口中// 放在 SOUTH 區(qū)域frame.add(panel2, BorderLayout.SOUTH);// IV. 自定設(shè)置合適的大小frame.pack();frame.setVisible(true);}
}

執(zhí)行效果 :
在這里插入圖片描述

拖動(dòng)放大查看效果 :

在這里插入圖片描述

點(diǎn)擊 last 按鈕 :

在這里插入圖片描述

點(diǎn)擊 previous 按鈕 :

在這里插入圖片描述

點(diǎn)擊 next 按鈕 :

在這里插入圖片描述

點(diǎn)擊 second 按鈕 :

在這里插入圖片描述





十七、BoxLayout 布局



BoxLayout 布局 不是 AWT 中的布局 , 而是 Swing 中引入的 ;

在 BoxLayout 布局 中 , 可以 在 垂直 和 水平 兩個(gè)方向上 擺放 Component 組件 ;





十八、BoxLayout 布局 API



BoxLayout 布局 API :

  • BoxLayout(Container target, int axis) : 為 Container target 組件 配置本 BoxLayout 布局管理器 , 該布局管理器會(huì) 按照指定的方向進(jìn)行排列 , 垂直 或 水平方向 ;
    /*** 創(chuàng)建布局管理器,該管理器將沿* 給定的軸。** @param target  需要布置的容器* @param axis    沿軸線布置組件??梢允瞧渲兄?*              <code>BoxLayout.X_AXIS</code>,*              <code>BoxLayout.Y_AXIS</code>,*              <code>BoxLayout.LINE_AXIS</code> or*              <code>BoxLayout.PAGE_AXIS</code>** @exception AWTError  if the value of <code>axis</code> is invalid*/@ConstructorProperties({"target", "axis"})public BoxLayout(Container target, int axis)




十九、BoxLayout 布局代碼示例



1、BoxLayout 布局垂直排列代碼示例


代碼示例 :

import javax.swing.*;
import java.awt.*;
import java.beans.ConstructorProperties;public class HelloAWT {public static void main(String[] args) {// I. Frame 默認(rèn)的布局管理器就是 BorderLayoutFrame frame = new Frame("AWT 界面編程");// II. 為 Frame 配置 BoxLayout 布局管理器// 組件垂直擺放BoxLayout boxLayout = new BoxLayout(frame, BoxLayout.Y_AXIS);// 為容器設(shè)置布局管理器frame.setLayout(boxLayout);frame.add(new Button("按鈕 1"));frame.add(new Button("按鈕 2"));// III. 自定設(shè)置合適的大小frame.pack();frame.setVisible(true);}
}

執(zhí)行效果 :

在這里插入圖片描述

拖動(dòng)放大后的效果 :

在這里插入圖片描述


2、BoxLayout 布局水平排列代碼示例


代碼示例 :

import javax.swing.*;
import java.awt.*;
import java.beans.ConstructorProperties;public class HelloAWT {public static void main(String[] args) {// I. Frame 默認(rèn)的布局管理器就是 BorderLayoutFrame frame = new Frame("AWT 界面編程");// II. 為 Frame 配置 BoxLayout 布局管理器// 組件垂直擺放BoxLayout boxLayout = new BoxLayout(frame, BoxLayout.Y_AXIS);// 為容器設(shè)置布局管理器frame.setLayout(boxLayout);frame.add(new Button("按鈕 1"));frame.add(new Button("按鈕 2"));// III. 自定設(shè)置合適的大小frame.pack();frame.setVisible(true);}
}

執(zhí)行效果 :

在這里插入圖片描述

放大后的效果 :
在這里插入圖片描述





二十、Box 容器



為了 方便使用 BoxLayout 布局 , Swing 中提供了 Box 容器 ;

Box 容器 默認(rèn)的 布局管理器 就是 BoxLayout ;

通過在 Box 容器構(gòu)造函數(shù)中傳入不同的參數(shù) , 可以直接創(chuàng)建 水平排列組件的 Box 容器垂直排列組件的 Box 容器 ;


Box 容器類似于 Android 中的 LinearLayout ;





二十一、Box 容器 API



Box 容器 API :

  • static Box createHorizontalBox() : 創(chuàng)建 水平排列組件的 Box 容器 ;
    /*** 創(chuàng)建一個(gè)顯示其組件的<code>Box</code>* 從左到右。如果你想要一個(gè)<code>Box</code>那* 的組件方向* <code>Box</code>使用構(gòu)造函數(shù)并傳入* <code>BoxLayout.LINE_AXIS</code>,例如:* <pre>*   Box lineBox = new Box(BoxLayout.LINE_AXIS);* </pre>** @return the box*/public static Box createHorizontalBox() {return new Box(BoxLayout.X_AXIS);}
  • static Box createVerticalBox() : 創(chuàng)建 垂直排列組件的 Box 容器 ;
    /*** 創(chuàng)建一個(gè)顯示其組件的<code>Box</code>* 從上到下。如果你想要一個(gè)<code>Box</code>那* 的組件方向* <code>Box</code>使用構(gòu)造函數(shù)并傳入* <code>BoxLayout.PAGE_AXIS</code>, eg:* <pre>*   Box lineBox = new Box(BoxLayout.PAGE_AXIS);* </pre>** @return the box*/public static Box createVerticalBox() {return new Box(BoxLayout.Y_AXIS);}




二十二、Box 容器代碼示例



代碼示例 :

import javax.swing.*;
import java.awt.*;public class HelloAWT {public static void main(String[] args) {// I. Frame 默認(rèn)的布局管理器就是 BorderLayoutFrame frame = new Frame("AWT 界面編程");// III. 設(shè)置主要布局// 創(chuàng)建第一組按鈕Box box = Box.createHorizontalBox();box.add(new Button("水平按鈕 1"));box.add(new Button("水平按鈕 2"));// 創(chuàng)建第二組按鈕Box box2 = Box.createVerticalBox();box2.add(new Button("垂直按鈕 1"));box2.add(new Button("垂直按鈕 2"));// 創(chuàng)建存放兩組按鈕的 BoxBox box3 = Box.createVerticalBox();box3.add(box);box3.add(box2);// 將存放兩組按鈕的 Box 容器放入 Frame 窗口frame.add(box3);// III. 自定設(shè)置合適的大小frame.pack();frame.setVisible(true);}
}

執(zhí)行結(jié)果 :
在這里插入圖片描述

改變窗口大小 :
在這里插入圖片描述





二十三、Box 容器中添加分割



代碼示例 :

import javax.swing.*;
import java.awt.*;public class HelloAWT {public static void main(String[] args) {// I. Frame 默認(rèn)的布局管理器就是 BorderLayoutFrame frame = new Frame("AWT 界面編程");// III. 設(shè)置主要布局// 創(chuàng)建第一組按鈕Box box = Box.createHorizontalBox();box.add(new Button("水平按鈕 1"));// 隨窗口大小改變而改變box.add(Box.createHorizontalGlue());box.add(new Button("水平按鈕 2"));// 固定分割值, 不隨窗口大小改變而改變box.add(Box.createHorizontalStrut(30));box.add(new Button("水平按鈕 3"));// 創(chuàng)建第二組按鈕Box box2 = Box.createVerticalBox();box2.add(new Button("垂直按鈕 1"));// 隨窗口大小改變而改變box2.add(Box.createVerticalGlue());box2.add(new Button("垂直按鈕 2"));// 固定分割值, 不隨窗口大小改變而改變box2.add(Box.createVerticalStrut(30));box2.add(new Button("垂直按鈕 3"));// 創(chuàng)建存放兩組按鈕的 BoxBox box3 = Box.createVerticalBox();box3.add(box);box3.add(box2);// 將存放兩組按鈕的 Box 容器放入 Frame 窗口frame.add(box3);// III. 自定設(shè)置合適的大小frame.pack();frame.setVisible(true);}
}

執(zhí)行結(jié)果 :

在這里插入圖片描述

改變窗口大小后的效果 :

在這里插入圖片描述

在這里插入圖片描述

http://aloenet.com.cn/news/46727.html

相關(guān)文章:

  • 海淀區(qū)企業(yè)網(wǎng)站建設(shè)公司網(wǎng)站設(shè)計(jì)制作
  • 北京 順義 網(wǎng)站制作培訓(xùn)網(wǎng)站制作
  • 自制圖片肇慶網(wǎng)站快速排名優(yōu)化
  • wordpress映射新余seo
  • 視頻解析接口網(wǎng)站怎么做百度提交網(wǎng)站
  • 怎么自己做三個(gè)一網(wǎng)站一份完整的營銷策劃書
  • 做農(nóng)產(chǎn)品的網(wǎng)站北京優(yōu)化seo排名優(yōu)化
  • 國外銷售網(wǎng)站怎樣建設(shè)免費(fèi)長尾詞挖掘工具
  • 麗水專業(yè)網(wǎng)站建設(shè)哪家好抖音seo優(yōu)化
  • wordpress.conf網(wǎng)站seo優(yōu)化免費(fèi)
  • 有沒有給做淘寶網(wǎng)站的中國十大網(wǎng)站有哪些
  • 做網(wǎng)站需要什么部門批準(zhǔn)重慶seo優(yōu)化效果好
  • 濟(jì)寧做企業(yè)網(wǎng)站濟(jì)南網(wǎng)站優(yōu)化排名推廣
  • 在哪里做網(wǎng)站比較好十大廣告投放平臺(tái)
  • 做平臺(tái)和獨(dú)立建網(wǎng)站綜合型b2b電子商務(wù)平臺(tái)網(wǎng)站
  • 免費(fèi)的素材網(wǎng)站網(wǎng)站如何做關(guān)鍵詞優(yōu)化
  • 個(gè)人網(wǎng)站發(fā)布怎么做優(yōu)化大師官網(wǎng)入口
  • 網(wǎng)站建設(shè)總體方案設(shè)計(jì)下載優(yōu)化大師app
  • web前端工程師職業(yè)規(guī)劃seo推廣優(yōu)化的方法
  • 公司網(wǎng)站建設(shè)有什么好處2345網(wǎng)址導(dǎo)航下載
  • 網(wǎng)站建設(shè)的公司在哪找企業(yè)推廣策略
  • 做網(wǎng)站犯法嗎小廣告圖片
  • 類似網(wǎng)站的建設(shè)西安seo網(wǎng)絡(luò)優(yōu)化公司
  • 網(wǎng)站建設(shè)個(gè)人網(wǎng)站佛山網(wǎng)絡(luò)推廣哪里好
  • 網(wǎng)站備案信息傳網(wǎng)店推廣聯(lián)盟
  • wordpress 小工具 調(diào)用seo是什么崗位
  • 山東日照建設(shè)網(wǎng)站微信小程序怎么開通
  • 做藥材生意的網(wǎng)站免費(fèi)下載百度app最新版本
  • 濟(jì)南網(wǎng)絡(luò)廣播電視臺(tái)北京關(guān)鍵詞優(yōu)化報(bào)價(jià)
  • 域名服務(wù)器的四種類型營口seo