1. 程式人生 > >java網格佈局(GridLayout)應用

java網格佈局(GridLayout)應用

我們先分析一下:

用BorderLayout顯然是不合適的,賬號和密碼佔據的位置差不多。我們觀察一下,發現這三行寬度基本一致。

由此我們可以考慮用網格佈局(GridLayout),分為3行1列,每行裝一個JPanel。JPanel預設為FlowLayout

佈局,由此可以把資訊和框分別裝進JPanel。

亮程式碼:

/**
 * @ Author_張斌
 * Layout演示
 *
 * 1.定義元件
 * 2.建立元件(建構函式)
 * 3.新增元件
 * 4.對窗體進行設定
 * 5.顯示視窗
 */

import javax.swing.*;
import javax.xml.stream.Location;
import java.awt.*;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.InputStreamReader;

public class Tests extends JFrame{

    //定義元件
    JPanel jp1,jp2,jp3;
    JPasswordField jpw;
    JLabel jl1,jl2;
    JTextField jtf;
    JButton jb1,jb2;

    public static void main(String[] args){

        Tests tests = new Tests();

    }

    public Tests(){
        //建立元件
        jp1 = new JPanel();
        jp2 = new JPanel();
        jp3 = new JPanel();
        jtf = new JTextField(10);
        jpw = new JPasswordField(10);
        jl1 = new JLabel("賬號");
        jl2 = new JLabel("密碼");
        jb1 = new JButton("登入");
        jb2 = new JButton("退出");

        //新增元件
        jp1.add(jl1);
        jp1.add(jtf);
        jp2.add(jl2);
        jp2.add(jpw);
        jp3.add(jb1);
        jp3.add(jb2);

        //新增JPanel
        this.add(jp1);
        this.add(jp2);
        this.add(jp3);

        //添加布局管理器
        this.setLayout(new GridLayout(3,1));

        //設定窗體
        this.setTitle("使用者登入");
        this.setSize(300,150);
        this.setLocation(200,200);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        //禁止使用者改變窗體大小
        this.setResizable(false);

        //顯示窗體
        this.setVisible(true);
    }
}