天天看點

2、java編寫登入界面

此文最早發表自我的部落格園博文《JAVASWING》

一、使用java Swing寫個登陸界面,感受一下布局管理器的特性和熟悉一下控件的使用

package com.swing;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.border.LineBorder;

/**
 * java中最常用的三種布局管理器 ,布局管理器中的控件将失去setSize與setBound的功能
 * 1、BorderLayout --》分為東西南北中,具有自動伸縮的能力,也就是你的控件是多大,相當于html中的内聯元素
 * 就會擴張到多大,直到所有的控件充滿你設定的JFrame空間位置,東,向西伸縮,高度預設充滿父控件,中,向四周伸縮
 * 西,向東伸縮,,高度充滿父控件,南,向北伸縮,寬度充滿父控件,北,向南伸縮。寬度充滿父控件
 * 2、GridLayout -- 》網格布局,根據行列數和水準以及垂直間距來自動平均配置設定空間
 * 3、FlowLayout -- 》流布局,可以設定它從什麼位置開始布局,空間為控件預設的大小,相當于html中的内聯元素
 * @author may
 *
 */

public class Login extends JFrame {

    private static final long serialVersionUID = 5083131604476590600L;

    private JPanel main;// 主體
    private JPanel header;// 頭部panel
    private JPanel body;// 窗體
    // 布局管理的每個空位隻能放一個控件,是以需要放JPanel
    private JPanel username;// 使用者名輸入欄
    private JPanel password;// 使用者密碼輸入欄
    private JLabel name_label;
    private JTextField name_text;
    private JLabel pass_label;
    private JLabel header_text;
    private JPanel login;
    private JButton submit;
    private JPasswordField pass_text;
    private JLabel tip;

    public Login() {
        this.setSize(320, 250);
        // 視窗不能變
        this.setResizable(false);
        // 頭部panel,類似html頁面的div
        header = new JPanel();
        
        header_text = new JLabel("<html>登陸界面</html>");
        // 設定水準居中
        header_text.setHorizontalAlignment(JLabel.CENTER);
        // 設定字型
        header_text.setFont(new Font("宋體", Font.BOLD, 18));
        // 設定背景色
        header_text.setBackground(new Color(242, 242, 242));
        // 在布局管理器中設定控件的大小是無效的
        // header_text.setSize(300, 20);
        // 設定手型
        header.setCursor(new Cursor(Cursor.MOVE_CURSOR));
        // 設定邊框
        header.setBorder(new LineBorder(new Color(242, 242, 242)));
        header.add(header_text);
        // 設定登陸體5行1列,垂直10像素
        body = new JPanel(new GridLayout(5, 1, 0, 10));
        body.setBackground(Color.white);
        // 設定水準布局,預設水準居中開始
        username = new JPanel(new FlowLayout(FlowLayout.CENTER));
        username.setBackground(Color.white);
        // 使用者名
        name_label = new JLabel("<html>賬 号:</html>");
        // 使用者名輸入框
        name_text = new JTextField(15);
        username.add(name_label);
        username.add(name_text);
        // 密碼輸入
        pass_label = new JLabel("密 碼:");
        pass_text = new JPasswordField(15);
        password = new JPanel();
        password.setBackground(Color.white);
        password.add(pass_label);
        password.add(pass_text);
        // 登陸
        submit = new JButton("登陸");
        submit.setBackground(Color.green);
        submit.setFont(new Font("宋體", Font.BOLD, 15));
        submit.setForeground(Color.white);
        login = new JPanel(new FlowLayout());
        login.setBackground(Color.white);
        login.add(submit);
        // 空白panel,隻是為了占位
        JPanel jpanel1 = new JPanel();
        jpanel1.setBackground(Color.white);
        body.add(jpanel1);
        body.add(username);
        body.add(password);
        body.add(login);
        tip = new JLabel("注冊新使用者|忘記密碼?");
        tip.setHorizontalAlignment(JLabel.RIGHT);
        tip.setVerticalAlignment(JLabel.NORTH);
        body.add(tip);
        main = new JPanel(new BorderLayout());
        main.add(body);
        main.setBackground(Color.white);
        main.add(header, BorderLayout.NORTH);
        this.getContentPane().add(main, BorderLayout.CENTER);
        // 設定為水準居中
        this.setLocationRelativeTo(null);
        // 設定點選關閉按鈕時,關閉窗體,推出程式
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);

    }

    public static void main(String[] args) {
        new Login();
    }

}
           

二、界面

2、java編寫登入界面