小程序[邮箱提取器-EmailSplider]总结
1、背景情况
2、涉及知识
3、效果图
4、源代码
package test; import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.regex.Matcher;
import java.util.regex.Pattern; import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.SwingUtilities; public class EmailSplider extends JFrame { private static final long serialVersionUID = -2498717483036732605L;
private JTextField txtHttpvtiebabaiducomp;
private JTextArea txtrn; /**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
EmailSplider frame = new EmailSplider();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
} private String ReadHtml(URL txtUrl){ StringBuffer sb = new StringBuffer();
try {
URLConnection conn =txtUrl.openConnection();
BufferedReader bf = new BufferedReader( new InputStreamReader( conn.getInputStream(),"utf-8"));
String str = null;
while((str = bf.readLine()) != null){
sb.append(str);
}
bf.close();
} catch (IOException e1) {
e1.printStackTrace();
}
return sb.toString();
} /**
* Create the frame.
*/
public EmailSplider() {
setResizable(false);
setTitle("\u90AE\u7BB1\u63D0\u53D6\u5668");
setSize(663, 507);
this.setLocationRelativeTo(null); //居中窗体
getContentPane().setLayout(null); JLabel label = new JLabel("\u8BF7\u8F93\u5165\u7F51\u5740");
label.setBounds(10, 10, 71, 15);
getContentPane().add(label); txtHttpvtiebabaiducomp = new JTextField();
txtHttpvtiebabaiducomp.setText("http://v.tieba.baidu.com/p/3349997454");
txtHttpvtiebabaiducomp.setBounds(82, 7, 493, 21);
getContentPane().add(txtHttpvtiebabaiducomp);
txtHttpvtiebabaiducomp.setColumns(10); JButton button = new JButton("\u63D0\u53D6");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
new Thread( () -> {
try {
URL txtUrl = new URL(txtHttpvtiebabaiducomp.getText());
String html = ReadHtml(txtUrl); Pattern p =Pattern.compile("[a-zA-Z0-9_-]+@\\w+\\.[a-z]+(\\.[a-z]+)?");
Matcher m = p.matcher(html); while(m.find()){
//System.out.println(m.group());
try {
SwingUtilities.invokeAndWait(()->{
txtrn.append(System.getProperty("line.separator")+m.group());
txtrn.setCaretPosition(txtrn.getText().length());
});
} catch (Exception e1) {
e1.printStackTrace();
}
}
} catch (MalformedURLException e1) {
JOptionPane.showMessageDialog(null, "请输入合法的网址!\n 必须以http:// 开头", "操作提示", JOptionPane.ERROR_MESSAGE);
return;
}
}).start();
}
});
button.setBounds(585, 6, 62, 23);
getContentPane().add(button); txtrn = new JTextArea();
txtrn.setText("\u8FD9\u91CC\u663E\u793A\u63D0\u53D6\u7684\u90AE\u7BB1");
txtrn.setLineWrap(true); JScrollPane jScrollPane = new JScrollPane(txtrn);
jScrollPane.setBounds(10, 35, 637, 432);
getContentPane().add(jScrollPane ); jScrollPane.setVerticalScrollBarPolicy(
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
}
}
5、jar包附件
SwingUtilities.invokeLater( new Runnable() {
@Override
public void run() {
txtrn.append(m.group()+System.getProperty("line.separator"));
txtrn.setCaretPosition(txtrn.getText().length());
}
}
});
SwingUtilities.invokeAndWait(()->{
txtrn.append(System.getProperty("line.separator")+m.group());
txtrn.setCaretPosition(txtrn.getText().length());
});Q3:怎么给JTextArea添加垂直滚动条?
txtrn = new JTextArea();
txtrn.setText("这里是内容");
txtrn.setLineWrap(true); //设置自动换行,让横向滚动条不显示 //用txtrn对象作为JScrollPane的构造方法的参数
JScrollPane jScrollPane = new JScrollPane(txtrn);
//下面setBounds很重要
jScrollPane.setBounds(10, 35, 637, 432);
//只需要把jScrollPane 添加到窗体,如果再添加txtrn对象就会乱。
getContentPane().add(jScrollPane );
Q4:提取邮箱的正则表达式怎么写?
小程序[邮箱提取器-EmailSplider]总结的更多相关文章
- 微信小程序自运营器 微信小程序自动运营器(让你的微信小程序,公众号零运营成本,24小时全自动运营)
自动发单,自动评价,自动评论,自动推广 微信小程序自运营器 微信小程序自动运营器(让你的微信小程序,公众号零运营成本,24小时全自动运营) 我们会根据你的微信公众号或微信小程序定制开发带有一定AI智 ...
- 微信小程序api拦截器
微信小程序api拦截器 完美兼容原生小程序项目 完美兼用小程序api的原本调用方式,无痛迁移 小程序api全Promise化 和axios一样的请求方式 小程序api自定义拦截调用参数和返回结果 强大 ...
- 微信小程序——音频播放器
先来个效果图韵下味: 需求: 音频的播放,暂停,中间按钮状态的变化,播放时实时更新播放进度: 前进15s,后退15s: 进度条拖动. 一开始想着这3个功能应该挺简单的.不就是播放,暂停,前进,后退么~ ...
- 微信小程序音乐播放器
写在前面 1.入门几天小白的作品,希望为您有帮助,有好的意见或简易烦请赐教 2.微信小程序审核音乐类别已经下架,想要发布选题需慎重.附一个参考链接,感谢https://www.hishop.com.c ...
- 小程序拾色器(颜色选择器)组件mini-color-picker
特性: 现有方案分析 we-color-picker 需注意组件定位,操作不跟手不流畅,配置复杂.其定位会撑开原有页面,体验不佳.滑动距离按像素区分(固定),需考虑设备分辨率,不利于多端. Papae ...
- 【小程序案例】支付宝小程序-MQTT模器,IoT设备通过WSS接入阿里云IoT物联网平台
支付宝小程序-MQTT模拟器通过WSS接入阿里云IoT物联网平台 小程序效果: 1. 准备工作 1.1 注册阿里云账号 开通阿里云账号,并通过支付宝实名认证 https://www.aliyun.co ...
- UWP_开源小程序 水印添加器
前几天写了一个确定水印位置的小博客.决定要写一个添加水印的UWP程序. 目前程序技术方面已经差不多了.所以提上日程
- 微信小程序音乐播放器组件
wxml <image bindtap="click" src="{{isPlay?'/images/':'/images/'}}"/> JS Pa ...
- 微信小程序踩坑集合
1:官方工具:https://mp.weixin.qq.com/debug/w ... tml?t=1476434678461 2:简易教程:https://mp.weixin.qq.com/debu ...
随机推荐
- Jquery datepicker的使用
1. 设定初始日期 $("#<%=txtStart.ClientID %>").datepicker("setDate", start); 2. 设 ...
- .NET Winform 将引用的dll文件集成到exe中(转)
Winform程序经常需要引用一些第三方dll文件,这些dll在发布后与exe文件保存在同一目录下,虽然将dll文件集成到exe中会增大文件尺寸,但程序目录会相对整洁. 下面介绍一种比较简单的集成方法 ...
- MarkdownPad - The Markdown Editor for Windows http://markdownpad.com/
MarkdownPad - The Markdown Editor for Windows http://markdownpad.com/
- 在WePY中实现了小程序的组件化开发,组件的所有业务与功能在组件本身实现,组件与组件之间彼此隔离,上述例子在WePY的组件化开发过程中,A组件只会影响到A所绑定的myclick
wepyjs - 小程序组件化开发框架 https://tencent.github.io/wepy/document.html#/?id=%e5%be%ae%e4%bf%a1%e5%b0%8f%e7 ...
- Flask简介
一. Python 现阶段三大主流Web框架 Django Tornado Flask 对比 1.Django 主要特点是大而全,集成了很多组件,例如: Models Admin Form 等等, 不 ...
- jQuery 网页禁止复制
<script type="text/javascript"> $(document).ready(function(){ $('#文本框id') ...
- 升级GCC 6.2编译LLVM的问题
[ 55%] Built target RTInterception.x86_64 [ 55%] Building ASM object projects/compiler-rt/lib/saniti ...
- php 获取上上个月数据 使用 strtotime('-1 months')的一个bug
今天,使用php 日期函数处理数据,发现一个问题. 具体场景是这样的,我一直以为strtotime 格式化当前日期 或 指定日期可以找到对应的数据,比如我要查找上上个与的数据,因为我要获取当前时间的 ...
- [转] 中国压缩传感资源(China Compressive Sensing Resources)
昨天查压缩感知的资料,无意间看到一位浙大女神Rachel Zhang的博客,果断关注了.我感觉应该向她好好学习.下面转自她的CSDN博客.网址是http://blog.csdn.net/abcjenn ...
- (转)C语言之原码、反码和补码
原码.反码和补码 1).数据在内存中存储的时候都是以二进制的形式存储的. int num = 10; 原码.反码.补码都是二进制.只不过是二进制的不同的表现形式. 数据是以补码的二进制存储的. 2). ...