用java编写一个微博登陆页面 您所在的位置:网站首页 用Java编写一个网页 用java编写一个微博登陆页面

用java编写一个微博登陆页面

2024-07-10 22:49| 来源: 网络整理| 查看: 265

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

基本功能如下:

(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 comBox; 21 22 // labePhone为手机标签,labe1,labe2,labe3分别为手机、密码、确认密码的提示标签 23 JLabel labePhone, labe1, labe2, labe3; 24 int flag = 0, flag2 = 1; // 标记符 25 HashSet set1 = new HashSet(); // HashSet集合,用于储存号码 26 HashSet set2 = new HashSet(); // 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(); 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 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 } 运行结果

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有