精华内容
下载资源
问答
  • 现在想通过对比完成登陆操作 请问这部分代码应该怎么写呢(最好带说明) 登录login.jsp String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerNam
    1.获取前台用户名密码(id,code);
    2.读取后台用户名密码(yhm,mm);
    现在想通过对比完成登陆操作 请问这部分代码应该怎么写呢(最好带说明)
    
    
    登录login.jsp
    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        <title>My JSP 'login.jsp' starting page</title>
    	<!--
    	<link rel="stylesheet" type="text/css" href="styles.css">
    	-->
    
      </head>
      
      <body>
      	<form name="loginForm" action="loginAction.jsp" method="post">
    	  	用户名:<input type="text" name="username"/><br/>
    	   	密码:<input type="text" name="password"/><br/>
    	   <input type="submit" value="提交"/>
    	   <input type="reset" value="重置"/>
      	</form>
      </body>
    </html>

    处理表单loginAction.jsp
    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    	String username=request.getParameter("username");
    	String password=request.getParameter("password");
    	if(username.equals("admin")&&password.equals("admin")){	//这里是模拟,实际和数据库打交道
    		response.sendRedirect("index.jsp");//跳转到你要的界面
    	}else{
    		response.sendRedirect("login.jsp");
    	}
    %>


    展开全文
  • 个性化登陆界面的方法有两种,第一种是替换登陆背景,这个算是小型个性化吧: 在/wp-admin/images找到login-bkg-tile.gif和login-bkg-bottom_new.gif两张图片,用自己定制的图片(大小最好相同)替换就行了。 当然这...
  • RT,希望大侠指导 用GDI+实现也好,用界面库实现也行
  • 选择的图片最好和你的屏幕分辨率一样大,要不显示出来会有拉伸或缩小。  注意: 1.在改图的时候杀软会提示修改了logonui.exe,要临时允许才可以改图,阻止了就不会改。.  2.替换完后会报一个没有成功的错误。...
  • Java实现登陆注册界面

    千次阅读 2020-06-28 19:04:52
    一、工具准备 1.Java开发集成工具 : mycilpse (可以采用更先进的idea intellij) ... JLabel:使用JLabel(new ImgeIcon(url)),进行背景设置,最好使用相对地址 "/" 将图片放在程序文件之中,也可使用本地

    一、工具准备
    1.Java开发集成工具 : mycilpse (可以采用更先进的idea intellij)
    2.包:jdbc包
    3.数据库:sql server

    二、知识需求

           1.java swing (也可采用SWT designer进行辅助界面设计 )
           
           所用组件:
           JButton:登陆
           JLabel:使用JLabel(new ImgeIcon(url)),进行背景设置,最好使用相对地址 "/" 将图片放在程序文件之中,也可使用本地地址:“\"
           JTextField:文本框,进行账号和密码输入
           JComboBox:下拉列表框,进行登陆角色选择
           
           更多可以参考这个博主文章或者官方文档,写得很全。[Swing 学习](https://blog.csdn.net/xietansheng/article/details/72814492)
           
           2.sql (连数据库请见 https://blog.csdn.net/qq_44654974/article/details/106676570)
         
          登陆注册:只需要进行用户检测和添加
          select * from usertable 
          Insert usertable values('Username','Password')
    

    三、代码

    登陆界面:

    package View;
    
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    
    import javax.swing.BorderFactory;
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JComboBox;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JPasswordField;
    import javax.swing.JTextField;
    
    public class Login extends JFrame {
    	public static String usern;
    
    	public static void main(String args[]) {
    		new Login();
    	}
    
    	Login() {
    		Content();
    		this.setTitle("企业员工健康系统");
    		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    		this.setLocation(600, 300);
    		this.setSize(800, 560);
    		this.setVisible(true);
    	}
    
    	void Content() {
    
    		// 背景设置
    		JLabel bg = new JLabel(new ImageIcon("Images/LoginIcon/LoginBg.png"));
    		this.setContentPane(bg);
    
    		// 登陆板块内容
    
    		JLabel logo = new JLabel("你的健康,我来负责");
    		logo.setBounds(20, 20, 180, 25);
    		logo.setFont(new Font(null, Font.BOLD, 16));// 字体设置
    		logo.setForeground(Color.orange);
    		this.add(logo);
    
    		JLabel label = new JLabel("欢迎登陆");
    		label.setBounds(380, 180, 120, 25);
    		label.setFont(new Font(null, Font.BOLD, 18));// 字体设置
    		this.add(label);
    
    		JLabel User = new JLabel("账号");
    		User.setBounds(320, 222, 30, 25);
    		User.setFont(new Font(null, Font.PLAIN, 14));// 字体设置
    		this.add(User);
    
    		JLabel User1 = new JLabel(new ImageIcon("Images/LoginIcon/User.png"));
    		User1.setBounds(350, 220, 30, 30);
    		this.add(User1);
    
    		JLabel Password = new JLabel("密码");
    		Password.setBounds(320, 254, 30, 25);
    		Password.setFont(new Font(null, Font.PLAIN, 14));// 字体设置
    		this.add(Password);
    
    		JLabel Password1 = new JLabel(new ImageIcon("Images/LoginIcon/Lock.png"));
    		Password1.setBounds(352, 250, 30, 30);
    		this.add(Password1);
    
    		JLabel Type = new JLabel("用户");
    		Type.setBounds(320, 286, 30, 25);
    		Type.setFont(new Font(null, Font.PLAIN, 14));// 字体设置
    		this.add(Type);
    
    		JLabel Type1 = new JLabel(new ImageIcon("Images/LoginIcon/Type.png"));
    		Type1.setBounds(350, 280, 30, 30);
    		this.add(Type1);
    
    		// 文本框和按钮
    
    		JButton btn = new JButton("登陆");
    		btn.setBounds(320, 320, 70, 25);
    		this.add(btn);
    
    		JButton btn1 = new JButton("注册");
    		btn1.setBounds(430, 320, 70, 25);
    		this.add(btn1);
    
    		JTextField User2 = new JTextField();
    		User2.setBounds(380, 222, 120, 25);
    		this.add(User2);
    
    		JPasswordField Password2 = new JPasswordField();
    		Password2.setBounds(380, 254, 120, 25);
    		this.add(Password2);
    
    		String[] listData = new String[] { "员工", "企业管理者", "系统管理员" };
    		JComboBox<String> type1 = new JComboBox<String>(listData);
    
    		type1.setBounds(380, 284, 120, 25);
    		this.add(type1);
    
    		JPanel panel = new JPanel(null);
    		panel.setBounds(290, 170, 245, 200);
    		panel.setBackground(Color.WHITE);
    		panel.setBorder(BorderFactory.createLineBorder(Color.gray));
    		this.add(panel);
    
    		JLabel Mention = new JLabel("");
    		Mention.setBounds(310, 100, 280, 25);
    		Mention.setForeground(Color.RED);
    		Mention.setFont(new Font(null, Font.BOLD, 14));
    		this.add(Mention);
    
    		// 登陆事件
    		btn.addActionListener(new ActionListener() {
    
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				// TODO Auto-generated method stub
    				// System.out.print(type1.getSelectedIndex());
    				String LoginID = User2.getText();
    				String password = Password2.getText();
    				String type = listData[type1.getSelectedIndex()];
    
    				if (new Data.Login().Check(LoginID, password, type)) {
    					dispose();
    
    					if (type.equals("员工")) {
    						usern = LoginID;
    						new EmployMain().open();
    					} else if (type.equals("企业管理者")) {
    						new Admin().open();
    					} else if (type.equals("系统管理员")) {
    						//
    						dispose();
    						new ADMIN1();
    					}
    
    				} else {
    					Mention.setText("输入信息有误,请重新输入");
    
    					try {
    
    						Thread.sleep(2000);
    
    					} catch (InterruptedException e1) {
    						// TODO Auto-generated catch block
    						e1.printStackTrace();
    					}
    
    					// Mention.setText("2");
    
    				}
    
    			}
    
    		});
    
    		// 注册事件
    		btn1.addActionListener(new ActionListener() {
    
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				// TODO Auto-generated method stub
    				dispose();
    				Register R = new Register();
    			}
    
    		});
    	}
    }
    

    效果展示:
    在这里插入图片描述
    注册界面:

    package View;
    
    import java.awt.Color;
    import java.awt.EventQueue;
    import java.awt.Font;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    import javax.swing.BorderFactory;
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JPasswordField;
    import javax.swing.JTextField;
    
    public class Register extends JFrame{
    	String CODE;
    	String NAME;
    	/**
    	 * Launch the application.
    	 */
    	public static void main(String[] args) {
    	  new Register();
    	}
    
    	/**
    	 * Create the application.
    	 */
    	public Register() {
    		initialize();
    		this.setBounds(500, 300, 800, 560);
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		this.setTitle("注册界面");
    		this.setLocation(500, 300);
    		this.setVisible(true);
    	}
    
    	/**
    	 * Initialize the contents of the frame.
    	 */
    	private void initialize() {
    		
    		
    		
    		JLabel bg = new JLabel(new ImageIcon("Images/Register/BG2.jpg"));
    		this.setContentPane(bg);
    		
    		
    		JLabel label = new JLabel("欢迎注册");
    		label.setBounds(380, 180, 120, 25);
    		label.setFont(new Font(null, Font.BOLD, 18));// 字体设置
    		this.add(label);
    
    		JLabel User = new JLabel("账号");
    		User.setBounds(322, 222, 30, 25);
    		User.setFont(new Font(null, Font.PLAIN, 14));// 字体设置
    		this.add(User);
    
    		JLabel User1 = new JLabel(new ImageIcon("Images/LoginIcon/User.png"));
    		User1.setBounds(350, 220, 30, 30);
    		this.add(User1);
    
    		
    		JLabel Password = new JLabel("密码");
    		Password.setBounds(322, 254, 30, 25);
    		Password.setFont(new Font(null, Font.PLAIN, 14));// 字体设置
    		this.add(Password);
    
    		JLabel Password1 = new JLabel(new ImageIcon("Images/LoginIcon/Lock.png"));
    		Password1.setBounds(352, 250, 30, 30);
    		this.add(Password1);
           
    		VerificationCodeImgUtil V=new VerificationCodeImgUtil();
    		//new VerificationCodeImgUtil().Excute();
    		V.Excute();
    	    CODE=V.code;
    		NAME=V.Name;
    		JLabel Check = new JLabel(new ImageIcon("Images/RadomCheck/"+NAME+".png"));
    		System.out.println("2:"+CODE);
    		Check.setBounds(322, 285, 120, 30);
    		this.add(Check);
    		
            
    		
    		
    		JTextField Check2 = new JTextField();
    		Check2.setBounds(444, 285, 55, 30);
    		this.add(Check2);
    		
    		// 文本框和按钮
    
    		JButton btn = new JButton("注册");
    		btn.setBounds(320, 325, 180, 25);
    		this.add(btn);
    		
    
    		JTextField User2 = new JTextField();
    		User2.setBounds(380, 222, 120, 25);
    		this.add(User2);
    
    		JPasswordField Password2 = new JPasswordField();
    		Password2.setBounds(380, 254, 120, 25);
    		this.add(Password2);
    		
    		JPanel panel = new JPanel(null);
    		panel.setBounds(290, 170, 245, 200);
    		panel.setBackground(Color.WHITE);
    		panel.setBorder(BorderFactory.createLineBorder(Color.gray));
    		this.add(panel);
    		
    		
    		JButton return1=new JButton("返回");
    		return1.setBounds(10, 10, 60, 25);
    		this.add(return1);
    		
    
    
    		
    		
    		return1.addActionListener(new ActionListener(){
    
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				// TODO Auto-generated method stub
    				dispose();
    				new Login();
    				
    			}
    			
    		});
    		//事件处理
    		
    		
    		JLabel Mention=new JLabel("");
    		Mention.setBounds(350, 100, 120, 25);
    		Mention.setForeground(Color.RED);
    		Mention.setFont(new Font(null,Font.BOLD,17));
    		this.add(Mention);
    		
    		
    		JLabel Readme=new JLabel("注册须知 ");
    		Readme.setBounds(620,200 , 120, 25);
    		Readme.setForeground(Color.RED);
    		this.add(Readme);
    		
    		JLabel Readme1=new JLabel(
    				 "1.账号长度为5位,若纯数字"
    				);
    		Readme1.setBounds(580,230 , 160, 25);
    		Readme1.setForeground(Color.RED);
    		this.add(Readme1);
    		
    		
    		JLabel Readme2=new JLabel(
    				"需要大于00100"
    				);
    		Readme2.setBounds(580,260 , 160, 25);
    		Readme2.setForeground(Color.RED);
    		this.add(Readme2);
    		
    		JLabel Readme3=new JLabel(
    				"2.密码需要在10位以内"
    				);
    		Readme3.setBounds(580,290 , 160, 25);
    		Readme3.setForeground(Color.RED);
    		this.add(Readme3);
    		
    		
    		btn.addActionListener(new ActionListener(){
    
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				// TODO Auto-generated method stub
    				//new VerificationCodeImgUtil().Excute();
    				 //	NAME=new VerificationCodeImgUtil().Name;
    				//Check.setIcon(new ImageIcon("Images/RadomCheck/"+NAME+".png") );
    				System.out.print("Y");
    			  
    				
    				//Check 密码、账号规范和验证码匹配
    				String RadomCheck=Check2.getText();
    				String Password=Password2.getText();
    				String UserName=User2.getText();
    				//String CODE=new VerificationCodeImgUtil().getCode();
    			
    				System.out.println(CODE+" "+RadomCheck);
    				
    				if(RadomCheck.equals(CODE)){
    					//
    				   if(Password.length()>=10||UserName.length()!=5){
    					   Mention.setText("注意注册规范!");
    					   VerificationCodeImgUtil V=new VerificationCodeImgUtil();
    						//new VerificationCodeImgUtil().Excute();
    						V.Excute();
    					    CODE=V.code;
    						NAME=V.Name;
    						Check.setIcon(new ImageIcon("Images/RadomCheck/"+NAME+".png") );
    					   
    					   
    				   }else{
    					   if(new Data.Login().Checkexist(UserName)){
    						   Mention.setText("改用户名已注册!");
    						   VerificationCodeImgUtil V=new VerificationCodeImgUtil();
    							//new VerificationCodeImgUtil().Excute();
    							V.Excute();
    						    CODE=V.code;
    							NAME=V.Name;
    							Check.setIcon(new ImageIcon("Images/RadomCheck/"+NAME+".png") );
    					   }else{
    						   SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    						  String time= df.format(new Date());
    						   
    						   new Data.Login().InsertNewUser(UserName, Password,time);
    						   Mention.setText("注册成功!");
    						   try {
    								
    								Thread.sleep(2000);
    								
    							} catch (InterruptedException e1) {
    								// TODO Auto-generated catch block
    								e1.printStackTrace();
    							}
    						   Mention.setText("");
    					   }
    					   
    				   }
    					
    					
    //					dispose();
    //					new Login();
    				}else{//延时??
    					Mention.setText("验证码错误!");
    					 VerificationCodeImgUtil V=new VerificationCodeImgUtil();
    						//new VerificationCodeImgUtil().Excute();
    						V.Excute();
    					    CODE=V.code;
    						NAME=V.Name;
    						Check.setIcon(new ImageIcon("Images/RadomCheck/"+NAME+".png") );
    					try {
    						
    						Thread.sleep(2000);
    						
    					} catch (InterruptedException e1) {
    						// TODO Auto-generated catch block
    						e1.printStackTrace();
    					}
    					
    				}
    
    			}
    			
    		});
    
    	}
    
    }
    
    

    效果展示:
    在这里插入图片描述

    展开全文
  • 在博主的电脑上实测成功,可参考博主博文https://blog.csdn.net/weixin_41529093/article/details/103176698,尽量自己尝试去做,最好不要下载,博主也是从零开始学习做**C#+access做注册、登陆界面,最后在解决无数...
  • IOS简单的登陆界面

    2014-04-28 18:51:00
    主要需要注意的几个问题: 1.导入图片方式最好用文件导入 代码: 在ViewController.m文件中 2.UILable常用属性 @property(nonatomic,copy) NSString *text; //设置文本内容 ...

    主要需要注意的几个问题:

           1.导入图片方式最好用文件导入

             代码:

             在ViewController.m文件中

             

           2.UILable常用属性

             @property(nonatomic,copy)   NSString           *text; //设置文本内容         

             @property(nonatomic,retain) UIFont             *font; //设置字体       

             @property(nonatomic,retain) UIColor            *textColor; //设置文本颜色     

             @property(nonatomic)        NSTextAlignment    textAlignment;   //设置文本的排列方式     

             @property(nonatomic) NSInteger numberOfLines;//设置文本多行显示

           3.UITextField 文本输入框

              1、密码输入框要隐藏输入字符,以黑点代替 
              2、Login时会检查输入框,若输入不合法,弹窗提示用户 
              3、点击界面空白地方的时候,能够收起输入键盘,防止挡住用户点击登陆。 

         代码:

                         

               //点击界面空白地方的时候,能够收起输入键盘,防止挡住用户点击登陆

                 

                //登陆按钮

                 

                 

    总结:

            熟悉@property(nonatomic) NSInteger numberOfLines;//设置文本多行显示

            熟悉密码安全设置secureTextEntry变黑点

            熟悉-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event回收键盘方法

            熟悉按钮addTarget控制点击事件的使用

            熟悉UIAlertView类的使用

     

         

    转载于:https://www.cnblogs.com/taopengcun/p/3697018.html

    展开全文
  • 如果我们想写一个登陆界面是不是一般都写两组TextView,EditText及一个Button,不过体验并不是太好,等等这些麻烦的的处理在Material Design TextInputLayout出现后得到了极大改善,我们可以做最少的事达到最好的效果...

    如果我们想写一个登陆界面是不是一般都写两组TextView,EditText及一个Button,不过体验并不是太好,等等这些麻烦的的处理在Material Design TextInputLayout出现后得到了极大改善,我们可以做最少的事达到最好的效果

    效果图


    导入支持库

    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support:support-v4:28.0.0'

    设计用户界面

    该项目的用户界面非常简单。它显示了一个欢迎标签(如果有的话,可以很容易地用徽标替换)和两个EditText元素,一个用于用户名,另一个用于密码。布局还包括一个触发登录序列的按钮。背景颜色是漂亮,平坦,浅灰色。

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:background="#e3e3e3"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="@dimen/activity_horizontal_margin"
        tools:context=".activity.StartActivity"
        android:orientation="vertical">
    
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0.5"
            android:orientation="vertical">
    
            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_centerInParent="true"
                android:gravity="center"
                android:text="Welcome"
                android:textSize="30sp"
                android:textColor="#333333"/>
    
        </RelativeLayout>
        
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0.5"
            android:orientation="vertical">
    
            <EditText
                android:id="@+id/username"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:inputType="textEmailAddress"/>
    
            <EditText
                android:id="@+id/password"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:inputType="textPassword"/>
    
            <Button
                android:id="@+id/btn"
                android:layout_marginTop="4dp"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Login"/>
    
        </LinearLayout>
    
    </LinearLayout>
    

    可以看到并不是非常美观,下载我们引入 TextInputLayout 稍作改动


    使用 TextInputLayout

    我们终于到达了本教程中最有趣的部分。一个  TextInputLayout 小部件的行为与LinearLayout它完全一样,它只是一个包装器。TextInputLayout只接受一个子元素,类似于a  ScrollView。子元素必须是一个EditText 元素。

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0.5"
            android:orientation="vertical">
    
            <android.support.design.widget.TextInputLayout
                android:id="@+id/usernameWrapper"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">
    
                <EditText
                    android:id="@+id/username"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:inputType="textEmailAddress"
                    android:hint="Username"/>
    
            </android.support.design.widget.TextInputLayout>
    
            <android.support.design.widget.TextInputLayout
                android:id="@+id/passwordWrapper"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="5sp">
    
                <EditText
                    android:id="@+id/password"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:inputType="textPassword"
                    android:hint="password"/>
    
            </android.support.design.widget.TextInputLayout>
    
            <Button
                android:id="@+id/btn"
                android:layout_marginTop="4dp"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Login"/>
    
        </LinearLayout>
            final TextInputLayout usernameWrapper = findViewById(R.id.usernameWrapper);
            final TextInputLayout passwordWrapper = findViewById(R.id.passwordWrapper);
            usernameWrapper.setHint("Username");
            passwordWrapper.setHint("Password");

    是不是美观了点呢?

    但我们遇到了一个问题,每次输入后键盘不能即使收起,这个问题该如何解决呢?


    实施onClick方法

    首先必须处理按钮单击。有很多方法可以处理按钮点击。

    public class StartActivity extends AppCompatActivity implements View.OnClickListener {
    
        private LinearLayout linearLayout;
        private TextInputLayout usernameWrapper;
        private TextInputLayout passwordWrapper;
        private Button btn;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_start);
    
            iniViews();
        }
    
        private void iniViews(){
            linearLayout = findViewById(R.id.background);
            usernameWrapper = findViewById(R.id.usernameWrapper);
            passwordWrapper = findViewById(R.id.passwordWrapper);
            btn = findViewById(R.id.btn);
    
            linearLayout.setOnClickListener(this);
            usernameWrapper.setOnClickListener(this);
            passwordWrapper.setOnClickListener(this);
            btn.setOnClickListener(this);
    
            usernameWrapper.setHint("Username");
            passwordWrapper.setHint("Password");
        }
    
    
        @Override
        public void onClick(View v) {
            switch (v.getId()){
                case R.id.usernameWrapper:
    
                    break;
    
                case R.id.passwordWrapper:
    
                    break;
    
                case R.id.btn:
    
                    break;
    
                case R.id.background:
                    hideKeyboard();
                    break;
    
                default:
    
                    break;
            }
        }
    
        private void hideKeyboard() {
            View view = getCurrentFocus();
            if (view != null) {
                ((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE)).
                        hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
            }
        }
    }

    这时我们就会进一步想,怎么知道用户输入的是一个正确的邮箱地址或者正确格式的密码呢?


    验证输入

    我使用维基百科建议的 有关电子邮件有效性的指南编写了以下正则表达式。

    /^[a-zA-Z0-9#_~!$&'()*+,;=:."(),:;<>@\[\]\\]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*$/

    所以我们就可以根据这个表达式建立一个类来实现完整的功能了

    public class EmailManager {
    
        private static final String EMAIL_PATTERN = "^[a-zA-Z0-9#_~!$&'()*+,;=:.\"(),:;<>@\\[\\]\\\\]+@[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)*$";
        private Pattern pattern = Pattern.compile(EMAIL_PATTERN);
        private Matcher matcher;
    
        public boolean validateEmail(String email) {
            matcher = pattern.matcher(email);
            return matcher.matches();
        }
    
        public boolean validatePassword(String password) {
            return password.length() > 5;
        }
    }
    

    如何获得输入框中的文字呢?


    检索数据

    正如我所说的,TextInputLayout 只是一个包装,但不像  LinearLayout 并且  ScrollView,你可以使用特定的方法获得它的子元素  getEditText。没有必要使用findViewById

    如果  TextInputLayout 不包含EditText,则  getEditText返回null 所以要小心a  NullPointException

            String username = usernameWrapper.getEditText().getText().toString();
            String password = usernameWrapper.getEditText().getText().toString();

    不会满足眼前效果的文门可能会想,如何监听文字的变化呢?


    显示错误

    TextInputLayout 错误处理简单快捷。所需的方法是  setErrorEnabledsetError

    setError 设置将显示在下方的红色错误消息EditText。如果传递的参数是null,则清除错误消息。它还将整个EditText小部件的颜色更改为红色。

    setErrorEnabled 启用错误功能。这直接影响布局的大小,增加较低的填充以为错误标签腾出空间。在设置错误消息之前启用此功能setError 意味着在显示错误时此布局不会更改大小。您应该结合这两种方法进行一些测试,以便您实际看到 我在说什么。

    另一个有趣的事实是,如果尚未启用错误功能并且您调用setError传递非null参数,setErrorEnabled(true) 则会自动调用。

    @Override
    public void onClick(View v) {
        String username = usernameWrapper.getEditText().getText().toString();
        String password = usernameWrapper.getEditText().getText().toString();
    
        switch (v.getId()){
            case R.id.usernameWrapper:
                if (!new EmailManager().validateEmail(username)) {
                    usernameWrapper.setError("Not a valid email address!");
                }else {
                    usernameWrapper.setErrorEnabled(false);
                }
                break;
    
            case R.id.passwordWrapper:
                if (!new EmailManager().validatePassword(password)) {
                    passwordWrapper.setError("Not a valid password!");
                }else {
                    passwordWrapper.setErrorEnabled(false);
                }
                break;
    
            case R.id.btn:
    
                break;
    
            case R.id.background:
                hideKeyboard();
                break;
    
    
            default:
    
                break;
        }
    }

    如果我们想要对改变颜色又该怎么办呢?


    调色

    Google非常清楚地编写了设计支持库。每个小部件的颜色都直接从style.xml文件中指定的主题颜色中绘制 。只需打开它并将colorAccent项目添加到活动主题即可更改表单的颜色方案。

        <style name="MyMaterialTheme.Base"                 parent="Theme.AppCompat.Light.NoActionBar">
            <item name="colorAccent">@color/purple</item>
        </style>

    最后效果

    到此为止所有效果基本都实现了,欢迎大家关注我继续 Material design 的学习

    展开全文
  • 一个带框的登陆界面

    2012-05-10 11:28:58
    今天开始学习web界面,学习到一个...最好使用utf-8,在eclipse web里显示的话,才能保证不是问号 <fieldset style="width:250px" > <legend >登陆窗口</legend> <p>用户名: <...
  • 服务器是别人做好的。现在想做个登陆界面,但是没有做过,不知道该看什么资料,从哪里着手,请大神指点(如果可以,详细点最好)。
  • 用MFC做登陆界面的一般步骤

    万次阅读 2011-03-22 14:33:00
    以前做登陆界面,一般一次成功了,但最近做却老是不成功,通常登陆对话框显示不出来,现在把具体步骤写下来以防再出现类似问题。 1,首先建一个单文档程序充做我们的主框架,也可以先建一个登陆对话框的...
  • 在启动界面就蓝屏,最有可能的就是WINLOGON进程的原因,可能在进程里插入了一些未知线程,例如病毒等,最好的方法是重装,系统很可能染毒了,最近MPEG-2的0day漏洞很猖狂的,还不好防,趁现在还能进系统,把有用的...
  • public interface 接口名 extends 接口,…{} 接口中有常量和抽象方法,常量的命名规则是每一个字母都要大写,可是我们常常忽略了这个规则,因为java没有严格要求要大写,小写时也不会报错,但是建议最好还是大写。...
  • 改变win7登陆时的界面

    2012-03-25 14:15:34
    每次win7开机的时候都会有要求你输入用户名密码的界面,但是那个界面是 win7默认的界面,想不想改成你喜欢的...话,最好通过PS等图像软件将图片变成适合你屏幕分辨率的宽高。将图片重命名为 backgrounddefault.j...
  • 如题,先请问大家这样是不是很麻烦,有没有必要实现这样的功能,如果很主流请大家教教我呀 最好用纯JSP
  • 由于毕设,要在Ubuntu下装pytorch,但是当时装的不知道啥问题,装了显卡驱动也没成,在跑程序时直接cpu only了,然而学长建议,工作量太大,最好装cuda,然而第一步就是安装显卡驱动。显卡驱动的毛病这里先不讲了。...
  • 一开始就是先弄到plexus插件(自行百度安装,最好汉化版本,好像百度出来的百度经验有云盘地址)。   第一步就是新建合成了,我用的是1280*720,黑底 这也没啥关系了 第二步弄2个固态层,一个浅蓝色背景,一...
  • Android studio的UI界面布局学习(一)——登陆页面的布局制作 先摆上一张图,内外边距必须得了解的,就不做过多介绍。 根据课本或者网上资料通过线性布局是很容易做出这样一个界面的。 但是不得不说,这个界面...
  • IOS界面跳转传值

    2013-08-14 20:59:59
    详细的IOS界面跳转及传值,包含toolbar...在第一个界面登陆,在第二个界面显示名字,并且根据不同的名字显示不同的图片 (最好不要加toolbar) 博客参考:http://blog.csdn.net/dingxiaowei2013/article/details/9971255
  • 后来发现不插hdmi线就能正常进入登陆界面了。于是我把登陆鉴权界面关闭,直接进入系统,就没这个问题了。其他非nvidia的板子,也有此问题,所以,我觉得这个是ubuntu或者linux驱动的bug,若有相关人士看到,能解答...
  • 用SharedPreferences保存一个首次登陆的信息,默认是true,进入MainActivity后对其经行赋flase保存,把GuideActivity作为软件的启动界面,如果是第一次启动,就初始化该activity,不是的话直接跳转到应用主界面...
  • Iphone多个view之间跳转传值[登陆]

    千次阅读 2013-08-14 21:02:05
    在第一个界面登陆,在第二个界面显示名字,并且根据不同的名字显示不同的图片 (最好不要加toolbar) 效果图: 单例Number.h: #import @interface Number : NSObject {  NSString *name;  NSString *password;...
  • web登陆过程总结

    2015-05-25 14:53:57
    学前端这么久,登陆过程也简单的练过(完全凭借自己的想象,然后成功了) 上周抽时间在网络上学习了...首先,登陆界面长什么样子。就是给用户一个输用户名密码的地方。我给他写成了这样: 这里有登陆必须的三个元素
  • 一、开启图形化界面后,默认不能使用root账号登陆,因此在安装设置图形化界面最好创建其他登陆账号或设置root账号可用 创建用户账号 useradd 用户名 passwd 用户名 回车之后填写两次密码 切换角色 su 角色...
  • 软件界面交互和易用性改进总结

    千次阅读 2006-07-28 21:00:00
    用户登陆界面最好有用户名和ID的记忆,焦点直接定位到密码输入框2.单据录入界面最好有保存和载入默认值的功能3.单据搜索界面可以保存用户自定义的各种搜索条件组合4.用户调整过的GRID的列宽,窗口的位置...
  •  QQ2013整个登陆界面采用一个子窗口,没有所谓的Edit控件等,界面元素估计都是画上去的,同时底层截取按键消息,保证密码的安全输入安全 因此要实现自动登录最好采用模拟鼠标,键盘等操作方式,mouse_event, ...
  • 今天利用这两个库写一个简单的用户登陆的GUI窗口界面: 1.先看看界面的效果图:  2.在搭建窗口时容易出现问题的几点: 设置窗口图标:窗口左上角图片 最好将图片的尺寸设计为32×32的格式: #设置窗口的左上角...
  • 一般来说出现这样的提示,是因为登陆的密码错误,如果密码中有数字,最好用主键盘输入,用数字键盘会有错误。 转载于:https://www.cnblogs.com/qinguoyi/p/7258879.html...

空空如也

空空如也

1 2 3 4 5 ... 16
收藏数 315
精华内容 126
关键字:

最好登陆界面