⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 loginform.java

📁 一个仿qq的程序源码 一个用纯java开发的
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package qianqian.p2pchat.gui;

import qianqian.p2pchat.constant.Const;
import qianqian.p2pchat.control.*;
import qianqian.p2pchat.message.UserMessage;
import qianqian.p2pchat.tools.Tools;

public class LoginForm extends RoomForm {
	private static final long serialVersionUID = 1L;
	
	private static int count = 0;
	private static LoginForm loginForm;
	private javax.swing.JButton btLogin;
	private javax.swing.JButton btUpdate;
	private javax.swing.JButton btConfig;
	private javax.swing.JButton btRegist;
	private javax.swing.JButton btKeyboard;
	private javax.swing.JTextField tbUserId;
	private javax.swing.JPasswordField tbUserPwd;
	private javax.swing.JLabel lbUserId;
	private javax.swing.JLabel lbUserPwd;
	private javax.swing.JLabel lbFindPwd;
	private javax.swing.JRadioButton btMale;
	private javax.swing.JRadioButton btFemale;
	private javax.swing.JCheckBox btShift;
	private javax.swing.ButtonGroup btgGender;
	private javax.swing.JPanel btGenderPane;
	private javax.swing.JLabel lbNick;
	private javax.swing.JLabel lbSelRoom;
	private javax.swing.JLabel lbNewRoom;
	private javax.swing.JLabel lbTitle;
	private javax.swing.JComboBox ltRooms;
	private javax.swing.JTextField tbNewRoom;
	private javax.swing.JTextField tbNickname;
	private javax.swing.JProgressBar progressBar;
	private javax.swing.Timer timer;
	private javax.swing.border.MatteBorder border;
	private java.awt.Image icon;
	private java.awt.Color backgColor;
	private java.awt.Color borderColor;
	private Keyboard keyboard;

	public static LoginForm getInstance() {
		if (loginForm == null) {
			synchronized(LoginForm.class) {
				if(loginForm == null)
					loginForm = new LoginForm();
			}
		}
		return loginForm;
	}

	private LoginForm() {
		initComponents();
		startProgress();
		addListener();
		setTitle("仟仟通信");
		setBounds(372, 250, 300, 204);
		setAlwaysOnTop(true);
		setResizable(false);
		setIconImage(icon);
		setVisible(true);
	}

	private void initComponents() {
		tbNickname = new javax.swing.JTextField();
		lbNick = new javax.swing.JLabel("输入昵称:");
		lbSelRoom = new javax.swing.JLabel("选择房间:");
		lbTitle = new javax.swing.JLabel(
				new javax.swing.ImageIcon("icons/title.gif"));
		ltRooms = new javax.swing.JComboBox();
		lbNewRoom = new javax.swing.JLabel("创建房间:");
		lbFindPwd = new javax.swing.JLabel("<html><u><font color=#2A73F0>忘记密码?</font></u></html>");
		tbNewRoom = new javax.swing.JTextField();
		btLogin = new javax.swing.JButton("登\0录");
		btUpdate = new javax.swing.JButton("刷新");
		btMale = new javax.swing.JRadioButton("男");
		btFemale = new javax.swing.JRadioButton("女");
		btShift = new javax.swing.JCheckBox("Shift");
		btgGender = new javax.swing.ButtonGroup();
		btGenderPane = new javax.swing.JPanel();
		progressBar = new javax.swing.JProgressBar();
		btConfig = new javax.swing.JButton("设置>>");
		btRegist = new javax.swing.JButton("注册", 
				new javax.swing.ImageIcon("icons/user.gif"));
		btKeyboard = new javax.swing.JButton("键盘", 
				new javax.swing.ImageIcon("icons/lock.gif"));
		tbUserId = new javax.swing.JTextField();
		tbUserPwd = new javax.swing.JPasswordField();
		lbUserId = new javax.swing.JLabel("QianQian账号:");
		lbUserPwd = new javax.swing.JLabel("QianQian密码:");
		backgColor = new java.awt.Color(235, 245, 255);
		borderColor = new java.awt.Color(115,185,255);
		border = new javax.swing.border.MatteBorder(new java.awt.Insets(1, 1,
				1, 1), borderColor);
		keyboard = new Keyboard(tbUserPwd);
		icon = new javax.swing.ImageIcon("icons/QianQian.gif").getImage();
		java.awt.Container contentPane = getContentPane();
		contentPane.setLayout(null);
		contentPane.setBackground(backgColor);
		
		lbTitle.setBounds(-1, -1, 302, 44);
		contentPane.add(lbTitle);
		lbTitle.setBorder(border);
		
		contentPane.add(lbUserId);
		lbUserId.setBounds(10, 53, 85, 25);
		
		contentPane.add(tbUserId);
		tbUserId.setBorder(border);
		tbUserId.setBounds(92, 53, 120, 25);
		
		contentPane.add(btRegist);
		btRegist.setBorder(border);
		btRegist.setBounds(220, 53, 60, 25);
		
		contentPane.add(lbUserPwd);
		lbUserPwd.setBounds(10, 91, 85, 25);
		
		contentPane.add(tbUserPwd);
		tbUserPwd.setBorder(border);
		tbUserPwd.setBounds(92, 91, 120, 25);
		
		contentPane.add(btKeyboard);
		btKeyboard.setBorder(border);
		btKeyboard.setBounds(220, 91, 60, 25);
		
		btLogin.setBorder(border);
		contentPane.add(btLogin);
		btLogin.setBounds(26, 132, 65, 25);

		btConfig.setBorder(border);
		contentPane.add(btConfig);
		btConfig.setBounds(125, 132, 65, 25);
		
		btShift.setBorder(border);
		btShift.setBackground(backgColor);
		contentPane.add(btShift);
		btShift.setBounds(235, 120, 60, 25);
		
		contentPane.add(lbFindPwd);
		lbFindPwd.setBounds(225, 145, 60, 20);
		
		contentPane.add(progressBar);
		progressBar.setForeground(borderColor);
		progressBar.setBackground(backgColor);
		progressBar.setBorder(javax.swing.BorderFactory.createEmptyBorder());
		progressBar.setBounds(-2, 166, 302, 3);

		contentPane.add(lbNick);
		lbNick.setBounds(15, 180, 90, 25);

		contentPane.add(tbNickname);
		tbNickname.setBorder(border);
		tbNickname.setBounds(75, 180, 100, 25);

		btgGender.add(btMale);
		btgGender.add(btFemale);
		btMale.setSelected(true);
		btMale.setBackground(backgColor);
		btFemale.setBackground(backgColor);

		btGenderPane.setLayout(new java.awt.GridLayout(1, 2, 5, 0));
		btGenderPane.setBackground(backgColor);
		btGenderPane.add(btMale);
		btGenderPane.add(btFemale);

		contentPane.add(btGenderPane);
		btGenderPane.setBounds(185, 180, 90, 25);

		contentPane.add(lbNewRoom);
		lbNewRoom.setBounds(15, 215, 148, 25);

		contentPane.add(tbNewRoom);
		tbNewRoom.setBorder(border);
		tbNewRoom.setBounds(75, 215, 200, 25);
		
		contentPane.add(lbSelRoom);
		lbSelRoom.setBounds(15, 250, 89, 25);

		contentPane.add(ltRooms);
		ltRooms.setBorder(border);
		ltRooms.setBackground(java.awt.Color.WHITE);
		ltRooms.setBounds(75, 250, 130, 25);

		btUpdate.setBorder(border);
		contentPane.add(btUpdate);
		btUpdate.setBounds(215, 250, 60, 25);
		
		contentPane.add(keyboard);
		keyboard.setBorder(border);
		keyboard.setBounds(300, -5, 290, 204);
		keyboard.setLayout(border, 6);

		pack();
	}

	private void startProgress() {
		int delay = 60;
		java.awt.event.ActionListener task = new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent ae) {
				if (count <= 100)
					progressBar.setValue(++count);
			}
		};
		timer = new javax.swing.Timer(delay, task);
	}

	private void addListener() {
		// 关闭窗口
		setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
		addWindowListener(new java.awt.event.WindowAdapter() {
			public void windowClosing(java.awt.event.WindowEvent e) {
				if(Controller.isOn())
					Controller.getInstance().quit();
				dispose();
			}
		});
		// 更新聊天列表
		btUpdate.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent evt) {
				updateRoomList();
			}
		});
		//设置
		btConfig.addActionListener(new java.awt.event.ActionListener() {
			boolean fold = true;
			public void actionPerformed(java.awt.event.ActionEvent evt) {
				if(fold) {
					btConfig.setText("设置<<");
					setBounds(372, 150, 300, 320);
					fold = false;
				} else {
					btConfig.setText("设置>>");
					setBounds(372, 250, 300, 204);
					fold = true;
				}
			}
		});
		// 登录
		btLogin.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent evt) {
				new Thread(new Runnable() {
					public void run() {
						if (!timer.isRunning()) {
							btLoginPerformed();
						}
					}
				}).start();
			}
		});
		//键盘
		btKeyboard.addActionListener(new java.awt.event.ActionListener() {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -