Java語言做一個簡單的登陸介面實現使用者名稱和密碼的登陸以及介面之間的跳轉
登陸介面的構想
在做登陸介面之前首先肯定是要對介面的進行佈局構想,想這個介面到底有哪些元素構成,就拿下面的圖來說吧
從這張圖片中我們可以知道這登陸介面的組成需要到使用者名稱和密碼兩個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();
}
});
}
}
實現結果:
做得不好的地方請各位大佬指出來,一起學習一起進步,謝謝大家。
相關文章
- JS實現登陸介面JS
- Java Web簡單登陸功能的實現JavaWeb
- C# 介面跳轉-登陸之後跳轉至主視窗C#
- 簡單實現登陸註冊gui介面以及打包成exe檔案GUI
- tkinter做一個簡單的登陸頁面(十六)
- QQ使用者登陸介面
- Go 語言實現 QQ 掃碼登陸Go
- SSH安全登陸原理:密碼登陸與公鑰登陸密碼
- flutter - 登陸介面&表單校驗Flutter
- NodeJs 建立一個簡單的登陸註冊NodeJS
- SSH 免密登陸 簡單版
- koa2+vue實現登陸以及是否登陸控制Vue
- 一對一直播原始碼,實現一個簡單的登入介面原始碼
- Flutter系列:2.實現一個簡單的登入介面Flutter
- php怎麼實現登陸後跳轉網頁PHP網頁
- 從登陸介面學習TextInputLayout
- pbootcms如何修改後臺的登陸地址/賬號以及密碼boot密碼
- 小視訊app原始碼,實現簡單的登入介面,輸入賬號密碼APP原始碼密碼
- node js如何實現密碼雜湊加密以及jwt登陸驗證JS密碼加密JWT
- Linux配置SSH免密登陸(公私鑰登陸)Linux
- 配置SSH免密碼登陸密碼
- Jupyter Notebook修改登陸密碼密碼
- SSM 重構註冊登陸介面SSM
- SSMS18 登陸介面清除不需要的登入賬戶SSM
- 帝國CMS忘記後臺登陸使用者名稱 密碼 認證碼 安全提問答案 資料庫使用者名稱及密碼的解決方法密碼資料庫
- 密碼過期引起的ssh無法登陸密碼
- SSH免密登陸
- cookie做登陸測試的思路Cookie
- win10登陸密碼取消不了怎麼辦_win10登陸密碼取消不了的解決方法Win10密碼
- 訂單交易平臺三(登入介面整個實現過程)階段一(只實現簡單的登入功能)
- 簡單的list介面和edit介面使用java swing實現Java
- 單點登陸
- 登陸介面模組解析——生成圖片驗證碼
- Nuxt 實現使用者鑑權登陸UX
- 線上直播原始碼,完整登陸頁面的全部資訊(包括使用者名稱、輸入密碼等)原始碼密碼
- Java 語言實現簡易版掃碼登入Java
- Vue學習:實現使用者沒有登陸時,訪問後自動跳轉登入頁面Vue
- kali linux 2020.3無法使用root使用者登陸GUI介面LinuxGUI