java中为什么要设置监听器,有什么用?

java中为什么要设置监听器,有什么用?,第1张

猪哥解答:

1、private JButton jb=new JButton("按钮")这句话声明了一个按钮,名字叫jb。

2、jb.addActionListener(this)这里给jb那个按钮设置了监听,默认为点击触发,当然你写的这个监听有点怪异~

3、点击按钮jb触发监听处理方法actionPerformed,在这里可以做你想要的 *** 作,你代码实现的是改变lab这个label标签的内容。

4、至于java中为什么要用监听,这就像银行装监控一样,监视你的一举一动,银行装监控是为了捕捉每个进银行的人的动作,预防危险的发生。

java中做监听同样是为了监视某个客户端动作用的,万一你给我搞破坏怎么办(监听的作用远不止如此),当然也像平时生活中不是所有的地方都要放监控,要不就没法过了,java中也不是所有的地方都要放监听,具体哪里要放监听,不该是在课本里学的,应该根据实际工厂、公司的需求来定。

import java.util.Scanner

public class Test {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in)

System.out.println("输入你要验证的邮箱:")

String mail = sc.next()

//@出现的下标

int atIndex = 0

//.出现的下标

int fullIndex = 0

//第一次出现的下标

atIndex = mail.indexOf('@', 0)

//第一次出现的下标

fullIndex = mail.indexOf('.', 0)

//判断@是否出现.后面

if(atIndex >= fullIndex) {

       System.out.println("此邮箱不合法!")

System.exit(0)

}

//判断@是否只有一个

if(mail.indexOf('@', 0) != mail.lastIndexOf('@')) {

System.out.println("此邮箱不合法!")

System.exit(0)

}

//判断.是否只有一个

if(mail.indexOf('.', 0) != mail.lastIndexOf('.')) {

System.out.println("此邮箱不合法!")

System.exit(0)

}

//判断@前面是否是1到40个字符

if(!(atIndex >= 1 && atIndex <= 40)) {

System.out.println("此邮箱不合法!")

System.exit(0)

}

//判断@前面是否为字母

for (int i = 0 i < atIndex i++) {

if (!((mail.charAt(i) >= 'a' && mail.charAt(i) <= 'z')||(mail.charAt(i) >= 'A' && mail.charAt(i) <= 'Z'))) {

System.out.println("此邮箱不合法!")

System.exit(0)

}

}

//判断@到.是否为只能是1到40个字符

if(!(fullIndex - atIndex - 1 >= 1 && fullIndex - atIndex - 1 <= 40)) {

    System.out.println("此邮箱不合法!")

    System.exit(0)

}

//判断@到.直接的是否为字母或数字

for (int i = atIndex+1 i < fullIndex i++) {

if (!((mail.charAt(i) >= 'a' && mail.charAt(i) <= 'z')||(mail.charAt(i) >= 'A' && mail.charAt(i) <= 'Z')||(mail.charAt(i)>='0'&&mail.charAt(i)<='9'))) {

System.out.println("此邮箱不合法!")

System.exit(0)

}

}

//判断.后面的是2到3长度的字符

if (!(mail.length() - fullIndex - 1 >= 2 && mail.length() - fullIndex -1 <= 3) ){

System.out.println("此邮箱不合法!")

System.exit(0)

}

//判断.后面的是英文字母

for (int i = fullIndex+1 i < mail.length() i++) {

if (!((mail.charAt(i) >= 'a' && mail.charAt(i) <= 'z')||(mail.charAt(i) >= 'A' && mail.charAt(i) <= 'Z'))) {

System.out.println("此邮箱不合法!")

System.exit(0)

}

}

System.out.println("此邮箱是合法的!")

}

}

首先使用java提供的格式类判断email是否格式有误,然后使用开源框架,验证邮箱是否有用,示例如下:

public static boolean checkEmail(String email) {

        if (!email.matches("[\\w\\.\\-]+@([\\w\\-]+\\.)+[\\w\\-]+")) {

            return false

        }

 

        String host = ""

        String hostName = email.split("@")[1]

        Record[] result = null

        SMTPClient client = new SMTPClient()

 

        try {

            // 查找MX记录

            Lookup lookup = new Lookup(hostName, Type.MX)

            lookup.run()

            if (lookup.getResult() != Lookup.SUCCESSFUL) {

                return false

            } else {

                result = lookup.getAnswers()

            }

 

            // 连接到邮箱服务器

            for (int i = 0 i < result.length i++) {

                host = result[i].getAdditionalName().toString()

                client.connect(host)

                if (!SMTPReply.isPositiveCompletion(client.getReplyCode())) {

                    client.disconnect()

                    continue

                } else {

                    break

                }

            }

 

            //以下2项自己填写快速的,有效的邮箱

            client.login("163.com")

            client.setSender("sxgkwei@163.com")

            client.addRecipient(email)

            if (250 == client.getReplyCode()) {

                return true

            }

        } catch (Exception e) {

            e.printStackTrace()

        } finally {

            try {

                client.disconnect()

            } catch (IOException e) {

            }

        }

        return false

    }

 

需要的jar支持:commons-net-2.2.jar,dnsjava-2.1.1.jar


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8104772.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存