欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java深入學(xué)習(xí)圖形用戶(hù)界面GUI之布局管理器

 更新時(shí)間:2022年05月07日 10:59:28   作者:遇安.112  
本文章向大家介紹Java GUI布局管理器,主要包括布局管理器使用實(shí)例、應(yīng)用技巧、基本知識(shí)點(diǎn)總結(jié)和需要注意事項(xiàng),具有一定的參考價(jià)值,需要的朋友可以參考一下

布局管理器:

組件在容器中的位置和尺寸是由布局管理器決定的,每當(dāng)需要重新調(diào)整屏幕大小時(shí),都要用到布局管理器。Swing常用的布局管理器有4種,分別是FlowLayout(流式布局管理器)、BorderLayout(邊界布局管理器)、GridLayout(網(wǎng)格布局管理器)、GridBagLayout(網(wǎng)格包布局管理器)。Swing容器在創(chuàng)建時(shí)都會(huì)使用一種默認(rèn)的布局管理器,在程序中可以通過(guò)調(diào)用容器對(duì)象的setLayout()方法設(shè)置布局管理器,通過(guò)布局管理器可自動(dòng)進(jìn)行組件的布局管理。

FlowLayout屬于流式布局管理器,是最簡(jiǎn)單的布局管理器。在這種布局下,容器會(huì)將組件按照添加順序從左向右放置。當(dāng)達(dá)到容器的邊界時(shí),自動(dòng)將組件放到下一行的開(kāi)始位置。這些組件可以按左對(duì)齊、居中對(duì)齊(默認(rèn)方式)或右對(duì)齊的方式排列。

FlowLayout布局管理器的特點(diǎn)是可以將所有組件像流水一樣依次進(jìn)行排列,不需要用戶(hù)明確設(shè)定,但是靈活性相對(duì)較差。如果將窗體拉伸變寬,按鈕的大小和按鈕之間的間距將保持不變,但按鈕相對(duì)于容器邊界的距離會(huì)發(fā)生變化,這一點(diǎn)大家可以將下文的案例代碼運(yùn)行自行體會(huì)。

FlowLayout案例:

import javax.swing.*;
import java.awt.*;
public class GUI_2布局管理器 {
    public static void main(String[] args) {
        JFrame frame=new JFrame("布局管理器");
        frame.setSize(600,300);
        //設(shè)置窗體中的布局管理器為FlowLayout(流式布局管理器),所有的組件居中對(duì)齊,水平和垂直間距為3
        frame.setLayout(new FlowLayout(FlowLayout.CENTER,3,3));
        JButton button=null;
        for (int i = 1; i <= 9; i++) {
            //創(chuàng)建按鈕
            button=new JButton("按鈕"+i);
            frame.add(button);
        }
        //設(shè)置窗體大小
        frame.setSize(280,250);
        //顯示組件
        frame.setVisible(true);
  }
}

GridLayout布局管理器是以網(wǎng)格的形式管理容器中組件布局的。GridLayout使用縱橫線(xiàn)將容器分成n行m列大小相等的容器,每個(gè)網(wǎng)格中放置一個(gè)組件。添加到容器中的組件首先放置在第1行第1列(左上角)的網(wǎng)格中,然后在第1行的網(wǎng)格中從左向右依次放置其他組件。一行放滿(mǎn)之后,繼續(xù)在下一行從左到右放置組件。GridLayout管理方式與FlowLayout類(lèi)似,但與FlowLayout不同的是,使用GridLayout管理的組件將自動(dòng)占據(jù)網(wǎng)格的整個(gè)區(qū)域。

GridLayout布局管理器的特點(diǎn)是組件的相對(duì)位置不隨區(qū)域的縮放而改變,但組件的大小會(huì)隨之改變,組件始終占據(jù)網(wǎng)格的整個(gè)區(qū)域。其缺點(diǎn)是總是忽略組件的最佳大小,所有組件的寬高都相同。

GridLayout案例:

import javax.swing.*;
import java.awt.*;
public class GUI_2布局管理器 {
    public static void main(String[] args) {
        JFrame frame=new JFrame("布局管理器");
        frame.setSize(600,300);
//        設(shè)置窗體中的布局管理器為GridLayout(網(wǎng)格式),設(shè)置窗體為3*3的網(wǎng)格
       frame.setLayout(new GridLayout(3,3));
        JButton button=null;
        for (int i = 1; i <= 9; i++) {
            //創(chuàng)建按鈕
            button=new JButton("按鈕"+i);
            frame.add(button);
        }
        //設(shè)置窗體大小
        frame.setSize(280,250);
        //顯示組件
        frame.setVisible(true);
  }
}

BorderLayout(邊界布局管理器)是一種較為復(fù)雜的布局方式,它將窗體劃分為5個(gè)區(qū)域,分別是東(EAST)、南(SOUTH)、西(WEST)、北(NORTH)、中(CENTER)。組件可以被放置在這5個(gè)區(qū)域中的任意一個(gè)區(qū)域中。

BorderLayout案例:

import javax.swing.*;
import java.awt.*;
public class GUI_2布局管理器 {
    public static void main(String[] args) {
        JFrame frame=new JFrame("布局管理器");
        frame.setSize(600,300);
        //設(shè)置窗體中的布局管理器為BorderLayout(邊界布局),組件間橫向、縱向間距均為5
        frame.setLayout(new BorderLayout(5,5));
        frame.add(new JButton("按鈕1"),BorderLayout.EAST);//東
        frame.add(new JButton("按鈕2"),BorderLayout.SOUTH);//南
        frame.add(new JButton("按鈕3"),BorderLayout.NORTH);//北
        frame.add(new JButton("按鈕4"),BorderLayout.WEST);//西
        frame.add(new JButton("按鈕5"),BorderLayout.CENTER);//中
        frame.setVisible(true);//顯示組件
  }
}

GridBagLayout是最靈活、最復(fù)雜的布局管理器,它與GridLayout布局管理器類(lèi)似,不同之處在于GridBagLayout允許網(wǎng)格中的組件大小各不相同,而且允許一個(gè)組件跨越一個(gè)或者多個(gè)網(wǎng)格。需要注意的是,如果希望組件的大小隨容器的增大而增大,必須同時(shí)設(shè)置GridBagConstraints對(duì)象的fill屬性和weightx、weighty屬性。

GridBagLayout案例:

import javax.swing.*;
import java.awt.*;
public class GUI_2布局管理器 {
    public static void main(String[] args) {
        JFrame frame=new JFrame("布局管理器");
        frame.setSize(600,300);
        //GridBagLayout布局管理器(最靈活,最復(fù)雜),需要自己設(shè)置各個(gè)按鈕或文本的位置
        frame.setLayout(null);
        Font font=new Font("仿宋",Font.BOLD,20);
        JLabel jl1=new JLabel("用戶(hù)名:");
        jl1.setBounds(10,10,160,40);//設(shè)置按鈕的坐標(biāo),x,y,長(zhǎng),高
        jl1.setFont(font);//設(shè)置統(tǒng)一字體,保證代碼整潔、美觀
        JTextField jf1=new JTextField("請(qǐng)輸入用戶(hù)名:",20);
        jf1.setBounds(130,10,230,40);
        jf1.setFont(font);
        JLabel jl2=new JLabel("密碼:");
        jl2.setBounds(10,60,160,40);
        jl2.setFont(font);
        JTextField jf2=new JTextField("請(qǐng)輸入密碼:",20);
        jf2.setBounds(130,60,230,40);
        jf2.setFont(font);
        JButton jb1=new JButton("登錄");
        jb1.setBounds(40,120,100,40);
        jb1.setFont(font);
        JButton jb2=new JButton("退出");
        jb2.setBounds(160,120,100,40);
        jb2.setFont(font);
        frame.add(jl1);//將這些按鈕添加到窗口上
        frame.add(jf1);
        frame.add(jl2);
        frame.add(jf2);
        frame.add(jb1);
        frame.add(jb2);
        frame.setVisible(true);
    }
}

運(yùn)用上面所講的GridBagLayout布局管理器寫(xiě)一個(gè)計(jì)算機(jī)模板(沒(méi)有實(shí)用功能,但外貌相似),還有更簡(jiǎn)便的方法,但這里我們使用GridBagLayout一種布局管理器實(shí)現(xiàn)。

import javax.swing.*;
import java.awt.*;
class 計(jì)算機(jī){
    public static void main(String[] args) {
        JFrame frame=new JFrame("計(jì)算器");
        frame.setSize(320,300);
        frame.setLayout(null);
        Font font=new Font("仿宋",Font.BOLD,20);
        JTextField jf1=new JTextField("     ",20);
        jf1.setBounds(10,10,180,40);
        jf1.setFont(font);
        JButton jl1=new JButton("刪除");
        jl1.setBounds(190,10,110,40);
        jl1.setFont(font);
        JButton jb1=new JButton("1");
        jb1.setBounds(10,50,50,40);
        jb1.setFont(font);
        JButton jb2=new JButton("2");
        jb2.setBounds(70,50,50,40);
        jb2.setFont(font);
        JButton jb3=new JButton("3");
        jb3.setBounds(130,50,50,40);
        jb3.setFont(font);
        JButton jb4=new JButton("+");
        jb4.setBounds(190,50,50,40);
        jb4.setFont(font);
        JButton jb16=new JButton("*");
        jb16.setBounds(250,50,50,40);
        jb16.setFont(font);
        JButton jb5=new JButton("4");
        jb5.setBounds(10,100,50,40);
        jb5.setFont(font);
        JButton jb6=new JButton("5");
        jb6.setBounds(70,100,50,40);
        jb6.setFont(font);
        JButton jb7=new JButton("6");
        jb7.setBounds(130,100,50,40);
        jb7.setFont(font);
        JButton jb8=new JButton("-");
        jb8.setBounds(190,100,50,40);
        jb8.setFont(font);
        JButton jb9=new JButton("7");
        jb9.setBounds(10,150,50,40);
        jb9.setFont(font);
        JButton jb10=new JButton("8");
        jb10.setBounds(70,150,50,40);
        jb10.setFont(font);
        JButton jb11=new JButton("9");
        jb11.setBounds(130,150,50,40);
        jb11.setFont(font);
        JButton jb12=new JButton("0");
        jb12.setBounds(190,150,50,40);
        jb12.setFont(font);
        JButton jb15=new JButton("/");
        jb15.setBounds(250,100,50,40);
        jb15.setFont(font);
        JButton jb14=new JButton(".");
        jb14.setBounds(250,150,50,40);
        jb14.setFont(font);
        JButton jb13=new JButton("=");
        jb13.setBounds(10,200,300,40);
        jb13.setFont(font);
        frame.add(jl1);
        frame.add(jf1);
        frame.add(jb1);
        frame.add(jb2);
        frame.add(jb3);
        frame.add(jb4);
        frame.add(jb5);
        frame.add(jb6);
        frame.add(jb7);
        frame.add(jb8);
        frame.add(jb9);
        frame.add(jb10);
        frame.add(jb11);
        frame.add(jb12);
        frame.add(jb13);
        frame.add(jb14);
        frame.add(jb15);
        frame.add(jb16);
        frame.setVisible(true);
    }
}

運(yùn)行結(jié)果如下:

到此這篇關(guān)于Java深入學(xué)習(xí)圖形用戶(hù)界面GUI之布局管理器的文章就介紹到這了,更多相關(guān)Java布局管理器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論