上次也写了一个微博登陆页面,不过功能还不够完善。今天重新完善了一些功能,分享出来给大家。

基本功能如下:

(1)具有类似新浪微博的用户注册图形界面.

(2)使用用户名或手机号注册,注册时需要提供新密码和

确认密码。

(3)注册时,用户名重复和手机号重复时能提供提示。

(4)注册时,手机号明显错误时能提供提示,手机号长 度为11

位,并且以 13、15、17、18 开头的号码判断为正确。

(5)程序以应用程序形式实现,不用 web 网页形式实现。

(6)用户数据存储以 HashSet 集合实现。

1 package com.bloge;
2 public class Weibo {
3     public static void main(String[] ars) {
4         WindowButton win = new WindowButton();
5         win.setBounds(400, 150, 606, 428);
6         win.setTitle("微博");
7     }
8 }
有一些图片是我截图弄来的。如果想显示背景图片和小图标的话,那就自己找图片放上去就可以了。
  1 package com.bloge;
  2
  3 import java.util.*;
  4 import javax.swing.*;
  5 import java.awt.*;
  6 import java.awt.event.*;
  7 import java.awt.Font;//字体
  8 import java.awt.Color;//颜色
  9 import java.util.HashSet;
 10
 11 public class WindowButton extends JFrame implements ActionListener,
 12         FocusListener {
 13
 14     Box boxV1, boxV2, boxV3, baseBox;// boxV1,boxV2,boxV3均为列式,baseBox为行式
 15     JButton button;
 16     JMenuBar menubar;
 17     JMenu menu1, menu2;
 18     JTextField text1; // 手机号的文本域
 19     JPasswordField pass1, pass2; // 密码和确认密码的文本域
 20     JComboBox<String> comBox;
 21
 22     // labePhone为手机标签,labe1,labe2,labe3分别为手机、密码、确认密码的提示标签
 23     JLabel labePhone, labe1, labe2, labe3;
 24     int flag = 0, flag2 = 1; // 标记符
 25     HashSet<String> set1 = new HashSet<String>(); // HashSet集合,用于储存号码
 26     HashSet<String> set2 = new HashSet<String>(); // HashSet集合,用于储存密码
 27
 28     WindowButton() {
 29         addWindowListener(new WindowAdapter() { // 匿名类的实例监视窗口事件
 30             public void windowClosing(WindowEvent e) {
 31                 dispose();
 32             }
 33         });
 34
 35         setLayout(new FlowLayout());
 36         setVisible(true);
 37
 38         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 39         setResizable(false); // 设置框架不可以改变大小
 40
 41         menubar = new JMenuBar();
 42         menu1 = new JMenu("个人注册");
 43         menu2 = new JMenu("邮箱注册");
 44         menubar.add(menu1); // 向菜单条里添加菜单
 45         menubar.add(menu2);
 46         setJMenuBar(menubar);
 47
 48         Toolkit tk = Toolkit.getDefaultToolkit(); // 设置窗口图标
 49         Image imge = tk.getImage("src\\Img\\20.png");
 50         setIconImage(imge);
 51
 52         Icon icon1 = new ImageIcon("src\\Img\\520.png"); // 手机图标的图片
 53
 54         boxV1 = Box.createVerticalBox(); // 列型盒式布局
 55         boxV1.add(new JLabel("来自"));
 56         boxV1.add(Box.createVerticalStrut(15));
 57         labePhone = new JLabel("手机");
 58         labePhone.setIcon(icon1);
 59
 60         labePhone.setFont(new Font("宋体", 1, 12));// 设置标签字体
 61         // labePhone.setForeground(Color.yellow);
 62
 63         boxV1.add(labePhone);
 64         // 垂直支撑,可以得到一个不可见的垂直Strut对象
 65         boxV1.add(Box.createVerticalStrut(15));
 66
 67         boxV1.add(new JLabel("设置密码"));
 68         boxV1.add(Box.createVerticalStrut(15));
 69         boxV1.add(new JLabel("确认密码"));
 70         boxV2 = Box.createVerticalBox(); // 列型盒式布局
 71         boxV2.add(Box.createVerticalStrut(35));
 72
 73         comBox = new JComboBox<String>();
 74         comBox.addItem("中国");
 75         comBox.addItem("美国");
 76         comBox.addItem("加拿大");
 77         comBox.addItem("巴西");
 78         comBox.addItem("马来西亚");
 79         comBox.addItem("日本");
 80         comBox.addItem("韩国");
 81         comBox.addItem("英国");
 82         comBox.addItem("法国");
 83         comBox.addItem("印度");
 84         comBox.addItem("德国");
 85         comBox.addItem("越南");
 86         add(comBox);
 87         boxV2.add(comBox);
 88
 89         text1 = new JTextField(10); // 输入手机号的文本域
 90         pass1 = new JPasswordField();
 91         pass2 = new JPasswordField();
 92
 93         boxV2.add(Box.createVerticalStrut(10));
 94         boxV2.add(text1); // 第一行,手机
 95
 96         text1.addFocusListener(this); // 为手机注册焦点事件,手机号
 97         pass1.addFocusListener(this);
 98         pass2.addFocusListener(this);
 99
100         boxV2.add(Box.createVerticalStrut(10));
101         boxV2.add(pass1);
102         boxV2.add(Box.createVerticalStrut(10));
103         boxV2.add(pass2);
104
105         boxV2.add(Box.createVerticalStrut(10));
106         button = new JButton("立即注册");
107         boxV2.add(button);
108
109         button.addActionListener(this); // 注册监听器,button为事件源,this为监听器
110
111         labe1 = new JLabel("");
112         labe2 = new JLabel("");
113         labe3 = new JLabel("");
114
115         boxV3 = Box.createVerticalBox(); // 列型盒式布局
116         boxV3.add(Box.createVerticalStrut(35));
117         boxV3.add(labe1);
118         boxV3.add(Box.createVerticalStrut(15));
119         boxV3.add(labe2);
120         boxV3.add(Box.createVerticalStrut(15));
121         boxV3.add(labe3);
122
123         baseBox = Box.createHorizontalBox(); // 列型盒式布局
124         baseBox.add(boxV1);
125         baseBox.add(Box.createHorizontalStrut(18));
126         baseBox.add(boxV2);
127         baseBox.add(Box.createHorizontalStrut(18));
128         baseBox.add(boxV3);
129         add(baseBox);
130
131         labe1.setText("                                            "
132                 + "                                                "); // 手机提示标签
133
134         ImageIcon img = new ImageIcon("src\\Img\\gg.jpg");// 设置背景图片
135
136         JLabel imgLabel = new JLabel(img);// 将背景图放在标签里。
137         // 将背景标签添加到jfram的LayeredPane面板里。
138         getLayeredPane().add(imgLabel, new Integer(Integer.MIN_VALUE));
139         // 设置背景标签的位置
140         imgLabel.setBounds(0, 0, img.getIconWidth(), img.getIconHeight());
141
142         Container contain = this.getContentPane();
143         // 将内容面板设为透明。将LayeredPane面板中的背景显示出来。
144         ((JPanel) contain).setOpaque(false);
145
146         validate(); // 刷新
147     }
148
149     public void focusGained(FocusEvent e) { // 无输入焦点变为有输入焦点
150         if (e.getSource() == text1) {
151
152             Icon icon2 = new ImageIcon("src\\Img\\h1.png");
153             labe1.setText("请输入手机号!                             ");
154             labe1.setFont(new Font("宋体", 0, 12));// 设置标签字体
155             labe1.setForeground(Color.blue);
156             labe1.setIcon(icon2);
157         }
158         if (e.getSource() == pass1) {
159             // labe2.setText("    ");
160             Icon icon2 = new ImageIcon("src\\Img\\h1.png");
161             labe2.setText("请输入密码!");
162             labe2.setFont(new Font("宋体", 0, 12));// 设置标签字体
163             labe2.setForeground(Color.blue);
164             labe2.setIcon(icon2);
165         }
166         if (e.getSource() == pass2) {
167             // labe3.setText("    ");
168             Icon icon2 = new ImageIcon("src\\Img\\h1.png");
169             labe3.setText("请确认密码!");
170             labe3.setFont(new Font("宋体", 0, 12));// 设置标签字体
171             labe3.setForeground(Color.blue);
172             labe3.setIcon(icon2);
173         }
174
175     }
176
177     public void focusLost(FocusEvent e) { // 有输入焦点变为无输入焦点
178
179         try {
180
181             if (e.getSource() == text1) {
182                 // labe1.setText("请输入密码!");
183                 String str = String.valueOf(text1.getText()); // 将数字转化为字符串
184                 String[] str1 = new String[str.length()];
185
186                 for (int i = 0; i < str.length(); i++) {
187                     str1[i] = str.substring(i, i + 1); // 截取
188                 }
189
190                 set1.add("13458351110");
191                 set1.add("17934558544");
192                 set1.add("13435455522");
193                 set1.add("14795823333");
194                 set1.add("15977178388");
195
196                 // 构造迭代器,用iterator()进行遍历
197                 Iterator<String> te = set1.iterator();
198                 while (te.hasNext()) {
199                     if (str.equals(te.next())) {
200                         str = "8888";
201
202                     }
203
204                 }
205
206                 if (str1[0].equals("1")) { // 必须用equals比较
207                     if ((str1[1].equals("0") || str1[1].equals("1")
208                             || str1[1].equals("2") || str1[1].equals("6") || str1[1]
209                                 .equals("9"))
210                             || ((text1.getText().length()) != 11)) {
211
212                         Icon icon3 = new ImageIcon("src\\Img\\h2.png");
213                         labe1.setText("请输入开头为13,14,15,17,18的号码,且为11位!");
214                         labe1.setFont(new Font("宋体", 0, 12));// 设置标签字体
215                         labe1.setForeground(Color.red);
216                         labe1.setIcon(icon3);
217                         flag = 0;
218                     } else if (str.equals("8888")) { // text1.getText().equals("1111")
219                         JOptionPane.showMessageDialog(null, "该手机号已被注册!"); // 弹出消息框
220                         Icon icon3 = new ImageIcon("src\\Img\\h2.png");
221                         labe1.setText("手机号码重复!                             ");
222                         labe1.setIcon(icon3);
223                         flag = 0;
224                         flag2 = 1;
225                     } else {
226                         Icon icon3 = new ImageIcon("src\\Img\\g1.png");
227                         // 手机号码正确,只显示正确的那个图标
228                         labe1.setText("                                          ");
229                         labe1.setIcon(icon3);
230                         flag = 1;
231                     }
232                 } else {
233                     Icon icon3 = new ImageIcon("src\\Img\\h2.png");
234                     labe1.setText("请输入开头为13,14,15,17,18的号码,且为11位!");
235                     labe1.setFont(new Font("宋体", 0, 12));// 设置标签字体
236                     labe1.setForeground(Color.red);
237                     labe1.setIcon(icon3);
238                     flag = 0;
239                 }
240             }
241
242             String s = String.valueOf(pass1.getPassword()); // 将数字转换成字符串
243             if (e.getSource() == pass1) {
244                 if ((s.length() < 5 && s.length() > 0) || s.length() > 12) {
245                     JOptionPane.showMessageDialog(null, "密码长度必须在5~12个字符之内!");
246
247                 } else {
248                     Icon icon2 = new ImageIcon("src\\Img\\g1.png"); // 第一个密码成功图标
249                     labe2.setText("   ");
250                     labe2.setIcon(icon2);
251                 }
252             }
253
254         } catch (Exception ee) {
255             // System.out.println(ee1);
256         }
257
258     }
259
260     public void actionPerformed(ActionEvent e) {
261         if (e.getSource() == button) {
262
263             try {
264                 // String str = String.valueOf(text1.getText()); //将数字转化为字符串
265                 String str2 = String.valueOf(pass1.getPassword());
266                 String str3 = String.valueOf(pass2.getPassword());
267
268                 if (!(str2.equals(str3))) {
269                     Icon icon2 = new ImageIcon("src\\Img\\h1.png");
270                     labe3.setText("密码正确!");
271                     labe3.setFont(new Font("宋体", 0, 12));// 设置标签字体
272                     labe3.setForeground(Color.blue);
273                     labe3.setIcon(icon2);
274
275                     JOptionPane.showMessageDialog(null, "两次密码不一致");
276                 } else if (str2.equals(str3) && flag == 1 && flag2 == 1) {
277                     JOptionPane.showMessageDialog(null, "注册成功!");
278                     String string1 = String.valueOf(text1.getText());
279                     String string2 = String.valueOf(pass2.getPassword());
280                     set1.add(string1); // 向集合中添加注册成功的新号码
281                     set2.add(string2); // 向集合中添加注册成功的新密码
282                     flag2 = 0;
283                 } else {
284                     if (flag2 != 0) {
285                         JOptionPane.showMessageDialog(null, "请输入正确的手机号!");
286                     }
287                 }
288             } catch (Exception ee1) {
289             }
290         }
291     }
292 }

运行结果

转载于:https://www.cnblogs.com/101tellyou/p/7647494.html

用java编写一个微博登陆页面相关推荐

  1. java编写存钱_用Java编写一个简单的存款

    package desposit.money; public class DespositMoney { public static void main(String[] args) { Custom ...

  2. 用java编写一个简单计算器

    java 采用java编写一个简单计算器,使用awt和swing 代码如下: import java.awt.Color; import java.awt.Font; import java.awt. ...

  3. 停车场管理系统 java_使用java编写一个停车场管理系统

    使用java编写一个停车场管理系统 发布时间:2020-11-30 16:00:28 来源:亿速云 阅读:145 作者:Leah 这篇文章给大家介绍使用java编写一个停车场管理系统,内容非常详细,感 ...

  4. java编写一个个人通信录程序

    Java编写一个个人通信录程序,具有如下功能: (1)定义一个类,包括姓名.邮政编码.通信地址等成员变量 (2)查找:根据姓名在文件中查找个人信息,如果找到则显示出来 (3)添加:向文件中写个人信息 ...

  5. java编写一个彩票开奖的模拟程序.游戏共有两种玩法,一种是21选5,即玩家输入5个1到21内的不重复的数。另外一种玩法是6+1玩法,即要求玩家输入7个整数,代表所购买的彩票号码,最后一个是特码。

    java编写一个彩票开奖的模拟程序.游戏共有两种玩法,一种是21选5,即玩家输入5个1到21内的不重复的数.另外一种玩法是6+1玩法,即要求玩家输入7个整数,代表所购买的彩票号码,最后一个是特码. 具 ...

  6. 用Java编写一个最简单的桌面程序

    使用Java的优势在于网络应用方面,但Java也提供了强大的用于开发桌面程序的API,它们包含在javax.swing包中.使用这个包可以编写简单的Java桌面应用程序. Java的javax.swi ...

  7. 如何用java编写一个简单的多人PK游戏

    如何用java编写一个简单的多人PK游戏 类与对象---PK游戏的编写 素材取用----王者荣耀和BILIBILI 创建两个对战的角色(PK游戏最少需要两名角色) 创建孙尚香和Van 设置孙尚香和Va ...

  8. JAVA编写一个年龄大小判断年纪题

    JAVA编写一个年龄大小判断年纪题 public class C{public static void main(String [] args){java.util.Scanner s = new j ...

  9. JAVA编写一个telephone_1、 编写一个Java程序,程序中有一个类Telephone, Telephone类中包括有电话品牌、...

    用Java编写一个员工类程序:1.属性:员工编号,员工姓名,基本工资,奖金,2.构造方法:至少两个.如下: package com.test;public class Employee { /** * ...

最新文章

  1. Java学习笔记之static
  2. ABAP设置输入焦点和表格控件行数的注意事项
  3. SELECT TOP column FROM table [ORDER BY column [DESC]]
  4. 创建ListView的基本步骤
  5. 性冷淡风的麻将,获红点奖!网友:没有烟火气了
  6. 分布式认知在计算机应用系统,人机交互作业
  7. 服务器怎么操作系统版本,服务器怎么操作系统版本
  8. DB2 exception: Cannot create PoolableConnectionFactory SQLCODE=-142
  9. Demo之JavaEE的Web中数据分页显示
  10. python实践winrm,实现远程连接Windows服务器,并执行指定命令
  11. 466.统计重复个数
  12. 现代通信原理10.2:采用匹配滤波器的数字基带传输系统误码性能分析
  13. Transformer t5代码relative_position计算
  14. HoloLens2之路-混合现实技术概述
  15. python第一天----爬取优美图库的图片
  16. 讲讲Python爬虫绕过登录的小技巧
  17. SDF 还能这样用?Cocos Creator 基于 SDF 实现多种 Shader 特效
  18. FTS数据库优化(Android)原理与应用详解(1)
  19. 翻译文章后再来看翻译文章
  20. 埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛A题Wasserstein Distance

热门文章

  1. wine安装RTX、QQ、飞信
  2. Linux命令之rpm命令
  3. 大数据时代下,海天酱油批发商的信息化建设
  4. eureka和ZooKeeper的区别
  5. Packet Tracer 思科模拟器入门教程 之十四 路由器综合路由配置
  6. 宝付国际一文读懂:跨境电商的外汇风险敞口(二)
  7. 马来西亚云顶高原游记
  8. 实操:月销售额200万RMB的中东COD二类电商记录
  9. php mysql查询3级分类下对应的一级和二级分类
  10. 大人也过儿童节,儿童节个性新闻火爆互联网[原创]