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
- 簡單實現登陸註冊gui介面以及打包成exe檔案GUI
- C# 介面跳轉-登陸之後跳轉至主視窗C#
- linux 關閉只允許SSH登陸(允許使用者名稱、密碼登陸)Linux密碼
- QQ使用者登陸介面
- 做一個php登陸頁面,用pc登陸和用手機登陸彈出來的登陸頁面不一樣。PHP
- linux 本地賬號密碼無法登陸(shell可以登入),一直返回 登陸的login介面Linux密碼
- Go 語言實現 QQ 掃碼登陸Go
- JS實現簡單的登入介面(不連線資料庫,把使用者名稱密碼寫死)JS資料庫密碼
- SSH安全登陸原理:密碼登陸與公鑰登陸密碼
- flutter - 登陸介面&表單校驗Flutter
- koa2+vue實現登陸以及是否登陸控制Vue
- 解決Xmanager登陸介面亂碼問題的方法 [轉]
- jQuery實現簡單登陸判斷jQuery
- 【PB登陸的實現】
- RHEL 6.5 登陸後放回登陸介面,迴圈登入問題
- 一對一直播原始碼,實現一個簡單的登入介面原始碼
- NodeJs 建立一個簡單的登陸註冊NodeJS
- 用多步的密匙交換方式來進行非常安全的會話初始化和使用者名稱密碼登陸 (轉)會話密碼
- 不同使用者登陸模組的實現
- Flutter系列:2.實現一個簡單的登入介面Flutter
- 從登陸介面學習TextInputLayout
- 用PHP編寫登陸介面PHP
- fedora 17的root不能圖形介面登陸
- ssh免密碼登陸密碼
- php怎麼實現登陸後跳轉網頁PHP網頁
- [SSH服務]——一個SSH無密碼登陸實驗密碼
- 新使用者首次登陸修改密碼密碼
- 使用者密碼包含特殊字元時的登陸方法密碼字元
- 關於資料庫登陸名和資料庫使用者名稱的一點點心得資料庫
- curl模擬請求、登陸以及帶驗證碼登陸
- pbootcms如何修改後臺的登陸地址/賬號以及密碼boot密碼
- javascript模擬重力感應彈跳,做個不一樣的登陸埠JavaScript
- 使用java+Mysql資料庫做一個簡單的登入視窗介面JavaMySql資料庫
- Linux使用者密碼後不能登陸(回到原登陸狀態)問題Linux密碼
- 7,javase程式碼實戰-條件語句——簡單的驗證使用者登陸(二)Java
- SSM 重構註冊登陸介面SSM