Java語言做一個簡單的登陸介面實現使用者名稱和密碼的登陸以及介面之間的跳轉

程式碼搬運工的菜鳥發表於2019-04-14

登陸介面的構想

在做登陸介面之前首先肯定是要對介面的進行佈局構想,想這個介面到底有哪些元素構成,就拿下面的圖來說吧
從這張照片中我們在這裡插入圖片描述
從這張圖片中我們可以知道這登陸介面的組成需要到使用者名稱和密碼兩個Jlabel標籤和一個JTextField文字框和JPasswordField的密碼框以及三個JButton按鈕,最後將這些元素新增到container這個容器中。

java swing元件中的Jlabel、JTextField、JPasswordField以及JButton一些基本屬性

JLabel

get/setText(): 獲取/設定標籤的文字。
get/seticon(): 獲取/設定標籤的圖片。
get/setHorizontalAlignment(): 獲取/設定文字的水平位置。
get/setVerticalAlignment(): 獲取/設定文字的垂直位置。
get/setDisplayedMnemonic(): 獲取/設定標籤的訪問鍵(下劃線文字)。
get/setLableFor(): 獲取/設定這個標籤附著的元件,所以當使用者按下 Alt+訪問鍵時,焦點轉移到指定的元件。

JButton

get/setText(): 獲取/設定標籤的文字。
get/seticon(): 獲取/設定標籤的圖片。
get/setHorizontalAlignment(): 獲取/設定文字的水平位置。
get/setVerticalAlignment(): 獲取/設定文字的垂直位置。
get/setDisplayedMnemonic(): 獲取/設定訪問鍵(下劃線字元),與 Alt 按鈕組合時,造成按鈕單擊。

JButton 上的狀態(活動/不活動、選中/沒選中、滑鼠經過/滑鼠離開、按下/沒按下,等等)方法

get/setDisabledIcon()
get/setDisableSelectedIcon()
get/setIcon()
get/setPressedIcon()
get/setRolloverIcon()
get/setRolloverSelectedIcon()
get/setSelectedIcon()

JTextField —— 基本文字元件,侷限在一個文字中

get/setText():用於獲取/設定 JTextField 中的文字

JTextArea —— 支援多行文字

is/setLineWrap():設定在行過長的時候是否要自動換行。
is/setWrapStyleWord():設定在單詞過長的時候是否要把長單詞移到下一行。

JPasswordField —— 密碼輸入

get/setEchoChar():獲取/設定每次字元輸入時在 JPasswordField 中顯示的字元。在獲取口令時,不會返回“回聲”,而是返回實際的字元。
getText(): 不應當 使用這個函式,因為它會帶來可能的安全問題(String 會儲存在記憶體中,可能的堆疊轉儲會暴露口令)。
getPassword():這是從 JPasswordField 中獲得口令的恰當方法,因為它返回一個包含口令的 char[]。為了保證恰當的安全性,陣列應當被清為 0,以確保它不會保留在記憶體中。

JFrame —— 相當於一個容器,可以把其他元件放在其中展現給使用者

get/setTitle(): 獲取/設定該容器的標題。
get/setState(): 獲取/設定該容器的最小化、最大化等狀態。
is/setVisible(): 獲取/設定該容器的可視狀態,換句話說,是否在螢幕上顯示。
get/setLocation(): 獲取/設定該容器在螢幕上應當出現的位置。
get/setsize(): 獲取/設定該容器的大小。
add(): 將元件新增到該容器中。

equals()的用法:
1、“==”比較兩個變數本身的值,即兩個物件在記憶體中的首地址。
(java中,物件的首地址是它在記憶體中存放的起始地址,它後面的地址是用來存放它所包含的各個屬性的地址,所以記憶體中會用多個記憶體塊來存放物件的各個引數,而通過這個首地址就可以找到該物件,進而可以找到該物件的各個屬性)
2、“equals()”比較字串中所包含的內容是否相同。

比如:
1

String s1,s2,s3 = "abc", s4 ="abc" ;
s1 = new String("abc");
s2 = new String("abc");

s1==s2   是 false      //兩個變數的記憶體地址不一樣,也就是說它們指向的物件不 一樣,

s1.equals(s2) 是 true    //兩個變數的所包含的內容是abc,故相等。

2

class Value 
{ 
int i; 
} 
public class EqualsMethod2 { 
public static void main(String[] args) { 
Value v1 = new Value(); 
Value v2 = new Value(); 
v1.i = v2.i = 100; 
System.out.println(v1.equals(v2));//(1)flase 
System.out.println(v1 == v2);//(2)true 
} 
}

參考:

程式碼的實現

package mk1;
import java.awt.*;//匯入awt包
import javax.swing.*;//匯入swing包
import java.awt.event.ActionListener;//匯入awt包中的監聽器事件包
import java.awt.event.ActionEvent;//匯入awt包中的ActionEvent事件包



public class denglu extends JFrame {
	 
	    
	public denglu() { 
		setSize(300,290);//設計窗體的大小
		JLabel a=new JLabel("使用者名稱"); //例項化JLabel物件
		JLabel b=new JLabel("密    碼");
		JTextField c=new JTextField(15);//例項化使用者名稱文字框
		JPasswordField d=new JPasswordField(15);//例項化密碼框
		d.setEchoChar('*');//將輸入密碼框中的密碼以*顯示出來
		JButton e=new JButton("確定");
		JButton f=new JButton("重置");
		JButton g=new JButton("註冊");
		setVisible(true);//使窗體視覺化
		Container mk=getContentPane();//獲取一個容器
//		將使用者名稱、密碼的Jlabel和使用者名稱JTextField文字框、密碼JPasswordField密碼框以及確定JButton、重置JButton、註冊JButton新增到container容器裡面                         //
		mk.add(a);
		mk.add(b);
		mk.add(c);
		mk.add(d);
		mk.add(e);
		mk.add(f);
		mk.add(g);
		setBounds(300,300,300,290);//設定窗體的長寬各為300、300  讓其顯示在左上方的300、300處
		mk.setLayout(null);
//		a、b、c、d、e、f、g顯示在container容器中的位置座標
		a.setBounds(10,40,50,18);
		b.setBounds(10,80,50,18);
		c.setBounds(60,40,200,18);
		d.setBounds(60,80,200,18);
		e.setBounds(110,180,60,30);
		f.setBounds(30,180,60,30);
		g.setBounds(190,180,60,30);
		
		f.addActionListener(new ActionListener() {//對重置按鈕新增監聽事件
 
			@Override
			public void actionPerformed(ActionEvent arg0) {
				// TODO Auto-generated method stub
				c.setText("");//對使用者名稱文字框進行重置
				d.setText("");//對密碼文字框進行重置
			}
			
		});
		e.addActionListener(new ActionListener() {//對確定按鈕新增監聽事件
			 
			@SuppressWarnings("deprecation")
			@Override
			public void actionPerformed(ActionEvent arg0) {
				// TODO Auto-generated method stub
				
				if(c.getText().trim().equals("mk")&&new String(d.getPassword()).equals("123456")) {//equals函式進行使用者名稱和密碼的匹配
					JOptionPane.showMessageDialog(null,"登入成功");
					
					new NewFrame();//進入到NewFrame這個窗體中
				}else {
					JOptionPane.showMessageDialog(null, "登入失敗");
				}
			}
				
		});
		g.addActionListener(new ActionListener(){//對註冊按鈕新增監聽事件
			@SuppressWarnings("deprecation")
			@Override
			public void actionPerformed(ActionEvent arg0) {
				// TODO Auto-generated method stub
				new zhuce();//進入都到zhuce窗體中
			}
			
		});
		
	}
		public static void main(String[] args) {
			new denglu();
			
		}
		
	}



NewFrame窗體

package mk1;

import javax.swing.*;
import java.awt.*;
public class NewFrame extends JFrame {
	NewFrame(){
		this.setBounds(100,100,500,400);
		this.setTitle("歡迎來到新視窗");
		Container s= getContentPane();
		JLabel t=new JLabel("NewFrame");
		s.add(t);
		this.setAlwaysOnTop(true);
		this.setVisible(true);
}

}

註冊窗體

package mk1;
import java.awt.*;
import javax.swing.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.sql.*;

import java.awt.Container;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

public class zhuce extends JFrame {
	public zhuce() {
		setSize(300,250);
		JLabel a=new JLabel("使用者名稱"); 
		JLabel b=new JLabel("密    碼");
		JLabel D1=new JLabel("再次確認密碼");
		JTextField c=new JTextField(15);
		JPasswordField d=new JPasswordField(15);
//		JPasswordField D=new JPasswordField(15);
		d.setEchoChar('.');
//		D.setEchoChar('.');
		JButton e=new JButton("確定");
		JButton f=new JButton("重置");
		JButton g=new JButton("返回");
		setVisible(true);
		Container mk=getContentPane();
		mk.add(a);
		mk.add(b);
		mk.add(c);
		mk.add(d);
		mk.add(e);
		mk.add(f);
		mk.add(g);
//		mk.add(D);
		setBounds(300,250,300,250);
		mk.setLayout(null);
		a.setBounds(10,40,50,18);
		b.setBounds(10,80,50,18);
		c.setBounds(60,40,200,18);
		d.setBounds(60,80,200,18);
		e.setBounds(110,120,60,30);
		f.setBounds(30,120,60,30);
		g.setBounds(190,120,60,30);
		g.addActionListener(new ActionListener(){
			@SuppressWarnings("deprecation")
			@Override
			public void actionPerformed(ActionEvent arg0) {
				// TODO Auto-generated method stub
				new denglu();
				
			}
			
		});
	}

}

實現結果:
在這裡插入圖片描述
在這裡插入圖片描述在這裡插入圖片描述在這裡插入圖片描述

做得不好的地方請各位大佬指出來,一起學習一起進步,謝謝大家。

相關文章