最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java AWT中常用的三種布局管理器詳解

 更新時間:2022年12月23日 11:23:46   作者:碼農(nóng)的命  
這篇文章主要介紹了Java AWT中常用的三種布局管理器詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

布局管理器

在java.awt 包中提供了5中常用的布局管理器,分別式FlowLayout(流式布局管理器)、BorderLayout(邊界布局管理器)、GridLayout(網(wǎng)格布局管理器)、GridBagLayout(網(wǎng)格包布局管理器)和CradLayout(卡片布局管理器)。

每種容器在創(chuàng)建時,沒有進行布置時會使用默認(rèn)的布局管理器,在程序中可以通過setLayout()方法設(shè)置布局管理器,通過布局管理器自動進行組件的布局管理。

例如,把一個Frame 窗體的布局管理器設(shè)置為FlowLayou,代碼入下:

+ Frame frame = new Frame();
+ frame.setLayout(new FlowLayout());

一、流程布局管理器(FlowLayout)

流程布局管理器(Flow Layout)是簡單的布局管理器,在這種布局管理下,容器會按照組件的順序從左到放置。當(dāng)?shù)饺萜鞯倪吔鐣r,會自動將組件放到下一行的開始位置。

這些組件可以左對齊,右對齊,居中對齊(默認(rèn)方式)

流程布局管理器(Flowlayout)運用如下:

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;public class TestFlowLayout {
    public static void main(String[] args) {
        Frame f = new Frame("ser");
        f.setLayout(new FlowLayout(FlowLayout.CENTER, 50, 100));//居中 將組件間的橫向間隙50像素和縱向間隙100像素
        //f.setLayout(new FlowLayout(FlowLayout.LEFT, 50, 100));//靠左   窗口變大體現(xiàn)效果更佳
        //f.setLayout(new FlowLayout(FlowLayout.RIGHT, 50, 100));//靠右  窗口變大體現(xiàn)效果更佳        f.setSize(200, 500);//(寬,高)
        f.setLocation(300, 200);//(x, y)
        f.setVisible(true);//窗體可見
        //設(shè)置大小固定  默認(rèn)是可以自由拉伸的 false 不可以改變
        f.setResizable(true);
        f.add(new Button("First"));
        f.add(new Button("Second"));
        f.add(new Button("Third"));
        f.add(new Button("Forth"));
        //監(jiān)聽窗口關(guān)閉
        f.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
    }
}

效果圖:

二、邊界布局管理器(BorderLayout)

BorderLayout(邊界布局管理器)是一種較為復(fù)雜的布局方式,它將容器劃分為5個區(qū)域,分別是東(EAST),西(WEST),南(SOUTH),北(NORTH),中(CENTER)。

組件可以被放置在這5個區(qū)域的任意一個位置。

邊界布局管理器(BorderLayout)應(yīng)用如下:

//東西南北中
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class TestBorderLayout {
    public static void main(String[] args) {
        Frame frame = new Frame("sss");
        frame.setVisible(true);
        frame.setSize(500,500);
        Button east = new Button("east");
        Button west = new Button("west");
        Button north = new Button("north");
        Button south = new Button("south");
        Button center = new Button("center");        frame.add(east,BorderLayout.EAST);
        frame.add(west,BorderLayout.WEST);
        frame.add(north,BorderLayout.NORTH);
        frame.add(south,BorderLayout.SOUTH);
        frame.add(center,BorderLayout.CENTER);
        //監(jiān)聽窗口關(guān)閉
        frame.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
    }   
}

效果圖:

三 、網(wǎng)格布局管理器

GridLayout(網(wǎng)格布局管理器)是用縱橫將容器分為n行m列的大小相等的網(wǎng)格,每個網(wǎng)格中放置一個組件。依照放入順序,依次放入,第一行放滿后放第二行。

GridLayout與FlowLayout的不同是,放置在GridLayout布局管理器中的組件會自動占據(jù)網(wǎng)格的整個區(qū)域。

網(wǎng)格布局管理器(GrudLayout)應(yīng)用如下:

//網(wǎng)格式布局
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;public class GridLayout {
    public static void main(String[] args) {
        Frame frame = new Frame("yyy");
        frame.setVisible(true);
        frame.setSize(600,600);
        Button btn1 =new Button("btn1");
        Button btn2 =new Button("btn2");
        Button btn3 =new Button("btn3");
        Button btn4 =new Button("btn4");
        Button btn5 =new Button("btn5");
        Button btn6 =new Button("btn6");        frame.setLayout(new java.awt.GridLayout(3,2));
        frame.add(btn1);
        frame.add(btn2);
        frame.add(btn3);
        frame.add(btn4);
        frame.add(btn5);
        frame.add(btn6);       frame.addWindowListener(new WindowAdapter() {
           @Override
           public void windowClosing(WindowEvent e) {
               System.exit(0);
           }
       });
    }
}

效果圖:

四、 綜合實例運用

使用上述布局方法實現(xiàn)如下圖所示的組件添加:

實現(xiàn)代碼如下:

/*
思路:
     首先分成三個部分
     第一個部分: 東西兩個位置可以使用BorderLayout(邊界布局管理器) 然后在中間加入一個
                 GridLayout(網(wǎng)格布局管理器)兩行一列放入組件 
     第二個部分: 東西兩個位置可以使用BorderLayout(邊界布局管理器) 然后在中間加入一個
                 GridLayout(網(wǎng)格布局管理器)兩行兩列放入組件
     第一個部分: GridLayout(網(wǎng)格布局管理器)兩行兩列放入組件
      一共用到5個panel(面板)            
*///主要是一個嵌套的思想
import java.awt.*;
import java.awt.GridLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;public class ExGUI {
    public static void main(String[] args) {
        Frame frame = new Frame();
        frame.setSize(600,300);
        frame.setVisible(true);
        frame.setBackground(Color.BLACK);
        frame.setLayout(new GridLayout(3,1));//少了就只有一個
        //為什么加入的那件
        Panel p1 = new Panel(new BorderLayout());
        Panel p2 = new Panel(new GridLayout(2,1));
        Panel p3 = new Panel(new BorderLayout());
        Panel p4 = new Panel(new GridLayout(2,2));
        Panel p5 = new Panel(new GridLayout(2,2));
        //上
        p1.add(new Button("b1"),BorderLayout.WEST);
        p1.add(new Button("b2"),BorderLayout.EAST);
        p2.add(new Button("b3"));
        p2.add(new Button("b4"));        p1.add(p2,BorderLayout.CENTER);        p3.add(new Button("b1"),BorderLayout.WEST);
        p3.add(new Button("b2"),BorderLayout.EAST);
        for (int i = 0; i < 4; i++) {
            p4.add(new Button("b"+i));
        }
        p3.add(p4,BorderLayout.CENTER);
        for (int i = 0; i < 4; i++) {
            p5.add(new Button("b"+i));
        }
        frame.add(p1);
        frame.add(p3);
        frame.add(p5);//面版不能復(fù)用只能使用一次 加入frame比加入panel優(yōu)先
        frame.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);//退出系統(tǒng)
            }
        });
    }
}

運行效果:

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • DUBBO 日志過濾器,輸出dubbo 接口調(diào)用入?yún)?、出參等信?最新推薦)

    DUBBO 日志過濾器,輸出dubbo 接口調(diào)用入?yún)?、出參等信?最新推薦)

    這篇文章主要介紹了DUBBO 日志過濾器,輸出dubbo 接口調(diào)用入?yún)?、出參等信?首先自定義一個過濾器?DubboLoggerFilter.java,本文結(jié)合示例代碼給大家講解的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • 關(guān)于Hadoop的HDFS集群

    關(guān)于Hadoop的HDFS集群

    這篇文章主要介紹了關(guān)于Hadoop的HDFS集群,Hadoop 如何配置集群、不同的計算機里又應(yīng)該有怎樣的配置,這些問題是在學(xué)習(xí)中產(chǎn)生的。本章的配置中將會提供一個典型的示例,需要的朋友可以參考下
    2023-05-05
  • 如何在IDEA中快速解決Jar沖突詳解

    如何在IDEA中快速解決Jar沖突詳解

    相信很多同學(xué)在過去做項目都遇到過Jar沖突的問題,在本地環(huán)境沒問題,一旦部署到測試或生產(chǎn)環(huán)境突然就啟動報錯,報類似classNotFound的Exception,本文詳細(xì)整理了如何在IDEA中快速解決Jar沖突,需要的朋友可以參考下
    2021-06-06
  • redis深入淺出分布式鎖實現(xiàn)上篇

    redis深入淺出分布式鎖實現(xiàn)上篇

    在單體應(yīng)用中,如果我們對共享數(shù)據(jù)不進行加鎖操作,會出現(xiàn)數(shù)據(jù)一致性問題,我們的解決辦法通常是加鎖。下面我們一起聊聊使用redis來實現(xiàn)分布式鎖
    2022-08-08
  • SpringBoot整合MQTT小結(jié)匯總

    SpringBoot整合MQTT小結(jié)匯總

    MQTT 客戶端是運行 MQTT 庫并通過網(wǎng)絡(luò)連接到 MQTT 代理的任何設(shè)備,是一種基于發(fā)布/訂閱(publish/subscribe)模式的“輕量級”通訊協(xié)議,該協(xié)議構(gòu)建于 TCP/IP 協(xié)議上,由 IBM 于 1999 年發(fā)明,對SpringBoot整合MQTT相關(guān)知識感興趣的朋友一起看看吧
    2022-01-01
  • Java 數(shù)據(jù)結(jié)構(gòu)之時間復(fù)雜度與空間復(fù)雜度詳解

    Java 數(shù)據(jù)結(jié)構(gòu)之時間復(fù)雜度與空間復(fù)雜度詳解

    算法復(fù)雜度分為時間復(fù)雜度和空間復(fù)雜度。其作用: 時間復(fù)雜度是度量算法執(zhí)行的時間長短;而空間復(fù)雜度是度量算法所需存儲空間的大小
    2021-11-11
  • 如何使用ByteArrayOutputStream下載文件

    如何使用ByteArrayOutputStream下載文件

    這篇文章主要介紹了如何使用ByteArrayOutputStream下載文件方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java中包裝類介紹與其注意事項

    Java中包裝類介紹與其注意事項

    Java語言是一個面向?qū)ο蟮恼Z言,但是Java中的基本數(shù)據(jù)類型卻是不面向?qū)ο蟮模@在實際使用時存在很多的不便,所以在設(shè)計類時為每個基本數(shù)據(jù)類型設(shè)計了一個對應(yīng)的類進行代表,這樣八個和基本數(shù)據(jù)類型對應(yīng)的類統(tǒng)稱為包裝類,有些地方也翻譯為外覆類或數(shù)據(jù)類型類。
    2017-02-02
  • Java使用Tessdata做OCR圖片文字識別的詳細(xì)思路

    Java使用Tessdata做OCR圖片文字識別的詳細(xì)思路

    這篇文章主要介紹了Java使用Tessdata做OCR圖片文字識別的詳細(xì)思路,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-07-07
  • Spring 使用 feign時設(shè)置header信息的操作

    Spring 使用 feign時設(shè)置header信息的操作

    這篇文章主要介紹了Spring 使用 feign時設(shè)置header信息的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08

最新評論

瑞金市| 洪湖市| 乌兰浩特市| 密云县| 醴陵市| 章丘市| 稻城县| 大姚县| 河源市| 叙永县| 昭平县| 麦盖提县| 东光县| 手游| 新郑市| 郧西县| 呼和浩特市| 永安市| 邹城市| 克东县| 保康县| 永德县| 鱼台县| 沙田区| 介休市| 南昌市| 醴陵市| 南靖县| 伊春市| 盖州市| 同仁县| 新竹县| 夹江县| 宁海县| 台南县| 灵川县| 醴陵市| 溧阳市| 沽源县| 邵阳市| 淄博市|