虽说没有完全还原,但是神似不少,以下是代码:
public class LoginFrame {
Socket socket;
PrintWriter pWriter;
BufferedReader bReader;
RegistrationPanel rp;
JFrame frame;
JPanel panel;
JButton button_r;
private JTextField textField;
private JPasswordField textField_1;
int mousex,mousey;
/**
* 账号密码长度满足条件时,变为true
*/
boolean b=false;
String url="https://ssl.zc.qq.com/v3/index-chs.html?from=client&pt_clientver=5575&pt_src=1®key"
+ "=4204DE5322DB44562E9D5E7910D766D681B44BA66BCCD51B39895654916405C2&ADUIN=0&ADSESSION="
+ "0&ADTAG=CLIENT.QQ.5575_NewAccount_Btn.0&ADPUBNO=26791";
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
new LoginFrame();
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public LoginFrame() {
frame = new JFrame();
//隐藏标题栏
frame.setUndecorated(true);
//不可改变窗体大小
frame.setResizable(false);
frame.setTitle("神秘社区");
frame.setIconImage(Toolkit.getDefaultToolkit().getImage("image/应用图标.jpg"));
frame.setBounds(500, 200, 411, 350);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
initialize();
frame.getContentPane().add(panel);
frame.addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e)
{
//获取点击鼠标时的坐标
mousex= e.getPoint().x;
mousey= e.getPoint().y;
frame.getContentPane().requestFocusInWindow();
button_r.setText(" ▼");
}
});
frame.addMouseMotionListener(new MouseMotionAdapter(){
public void mouseDragged(MouseEvent e)
{
frame.setLocation((e.getXOnScreen()-mousex),(e.getYOnScreen()-mousey));//设置拖拽后,窗口的位置
// System.out.println(e.getXOnScreen()+","+mousex+","+e.getYOnScreen()+","+mousey);
}
});
int windowWidth = frame.getWidth();//获得窗口宽
int windowHeight = frame.getHeight();//获得窗口高
Toolkit kit = Toolkit.getDefaultToolkit();//定义工具包
Dimension screenSize = kit.getScreenSize();//获取屏幕的尺寸
int screenWidth = screenSize.width;//获取屏幕的宽
int screenHeight = screenSize.height;//获取屏幕的高
frame.setLocation(screenWidth/2-windowWidth/2, screenHeight/2-windowHeight/2);//设置窗口
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
panel = new JPanel();
panel.setBounds(0, 0, 411, 350);
panel.setLayout(null);
panel.setBackground(Color.white);
JLabel label_1 = new JLabel("");
label_1.setIcon(new ImageIcon("image/应用图标1.png"));
label_1.setBounds(0, 0, 37, 51);
panel.add(label_1);
JLabel label_3 = new JLabel("");
label_3.setIcon(new ImageIcon("image/神秘社区白色1.png"));
label_3.setForeground(Color.RED);
label_3.setBounds(43, 10, 142, 32);
panel.add(label_3);
JButton btnNewButton_1 = new JButton("");
btnNewButton_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
btnNewButton_1.setBackground(Color.red);
}
});
//背景透明
btnNewButton_1.setContentAreaFilled(false);
//边框不显示
btnNewButton_1.setBorderPainted(false);
btnNewButton_1.setIcon(new ImageIcon("image/最小化图标11.png"));
btnNewButton_1.setBounds(348, 0, 37, 32);
//鼠标悬停时提示信息
btnNewButton_1.setToolTipText("最小化");
//焦点框不显示
btnNewButton_1.setFocusPainted(false);
btnNewButton_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
frame.setExtendedState(JFrame.ICONIFIED);
}
});
btnNewButton_1.addMouseListener(new MouseAdapter() {
/*@Override
public void mouseClicked(MouseEvent e) {
// TODO 自动生成的方法存根
}
@Override
public void mousePressed(MouseEvent e) {
// TODO 自动生成的方法存根
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO 自动生成的方法存根
}*/
@Override
public void mouseEntered(MouseEvent e) {
// TODO 自动生成的方法存根
btnNewButton_1.setIcon(new ImageIcon("image/最小化图标1.png"));
}
@Override
public void mouseExited(MouseEvent e) {
// TODO 自动生成的方法存根
btnNewButton_1.setIcon(new ImageIcon("image/最小化图标11.png"));
}
});
panel.add(btnNewButton_1);
JButton button_2 = new JButton("");
button_2.setContentAreaFilled(false);
button_2.setBorderPainted(false);
button_2.setIcon(new ImageIcon("image/关闭图标2.png"));
button_2.setBounds(378, 0, 37, 32);
button_2.setToolTipText("关闭");
button_2.setFocusPainted(false);
button_2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(socket!=null){
try {
socket.close();
} catch (IOException e1) {
// TODO 自动生成的 catch 块
e1.printStackTrace();
}
}
System.exit(0);
//frame.dispose();
}
});
button_2.addMouseListener(new MouseAdapter() {
/*@Override
public void mouseClicked(MouseEvent e) {
// TODO 自动生成的方法存根
}
@Override
public void mousePressed(MouseEvent e) {
// TODO 自动生成的方法存根
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO 自动生成的方法存根
}*/
@Override
public void mouseEntered(MouseEvent e) {
// TODO 自动生成的方法存根
button_2.setIcon(new ImageIcon("image/关闭图标22.png"));
}
@Override
public void mouseExited(MouseEvent e) {
// TODO 自动生成的方法存根
button_2.setIcon(new ImageIcon("image/关闭图标2.png"));
}
});
panel.add(button_2);
JLabel lblNewLabel_2 = new JLabel();
lblNewLabel_2.setIcon(new ImageIcon("image/背景g2.gif"));
lblNewLabel_2.setBounds(0, -5, 433, 155);
panel.add(lblNewLabel_2);
JLabel lblNewLabel = new JLabel(":");
lblNewLabel.setBounds(113, 166, 37, 26);
panel.add(lblNewLabel);
lblNewLabel.setBorder(new MatteBorder(0, 0, 2, 0, Color.gray));
lblNewLabel.setIcon(new ImageIcon("image/登录_用户图标1.jpg"));
JLabel lblNewLabel_1 = new JLabel(":");
lblNewLabel_1.setBounds(114, 207, 37, 27);
panel.add(lblNewLabel_1);
lblNewLabel_1.setBorder(new MatteBorder(0, 0, 2, 0, Color.gray));
lblNewLabel_1.setAutoscrolls(true);
lblNewLabel_1.setIcon(new ImageIcon("image/登录_密码图标2.jpg"));
//神秘号记录列表
JPopupMenu popupMenu = new JPopupMenu();
popupMenu.setOpaque(false);
popupMenu.setBorderPainted(false);
panel.add(popupMenu);
JMenuItem menuItem_1 = new JMenuItem("1 0 0 0 0 ");
popupMenu.add(menuItem_1);
JMenuItem menuItem = new JMenuItem(" ");
menuItem.setBorderPainted(true);
menuItem.setContentAreaFilled(false);
menuItem.setOpaque(true);
menuItem.setSize(new Dimension(99, 20));
menuItem.setPreferredSize(new Dimension(40, 22));
popupMenu.add(menuItem);
button_r = new JButton(" ▼");
button_r.setBounds(271, 166, 24, 26);
button_r.setFont(new Font("宋体", Font.PLAIN, 15));
button_r.setContentAreaFilled(false);
//button_r.setFocusPainted(false);
button_r.setBorder(new MatteBorder(0, 0, 2, 0, Color.gray));
button_r.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
String t=button_r.getText();
if(t.equals(" ▼")){
button_r.setText(" ▲");
popupMenu.show(panel, 111, 192);
}
else{
button_r.setText(" ▼");
popupMenu.setVisible(false);
}
//button_r.requestFocus();
}
});
panel.add(button_r);
//神秘号输入框
textField = new JTextField();
textField.setBounds(149, 165, 122, 27);
textField.setBorder(new MatteBorder(0, 0, 2, 0, Color.gray));
textField.setColumns(10);
textField.addKeyListener(new KeyListener(){
@Override
public void keyTyped(KeyEvent e) {
//如果输入的不是数字就取消输入
char ch=e.getKeyChar();
String t=textField.getText();
//第一位不能为0
if(t.equals("")&&ch=='0'){
e.consume();
}
else if((!(ch>='0'&&ch<='9'))||t.length()>9){
e.consume();
}
}
@Override
public void keyPressed(KeyEvent e) {
}
@Override
public void keyReleased(KeyEvent e) {
}
});
textField.addFocusListener(new FocusListener(){
@Override
public void focusGained(FocusEvent e) {
lblNewLabel.setIcon(new ImageIcon("image/登录_用户图标2.jpg"));
lblNewLabel.setBorder(new MatteBorder(0, 0, 2, 0, Color.BLACK));
textField.setBorder(new MatteBorder(0, 0, 2, 0, Color.BLACK));
button_r.setBorder(new MatteBorder(0, 0, 2, 0, Color.black));
}
@Override
public void focusLost(FocusEvent e) {
lblNewLabel.setIcon(new ImageIcon("image/登录_用户图标1.jpg"));
lblNewLabel.setBorder(new MatteBorder(0, 0, 2, 0, Color.gray));
button_r.setBorder(new MatteBorder(0, 0, 2, 0, Color.gray));
textField.setBorder(new MatteBorder(0, 0, 2, 0, Color.gray));
}
});
panel.add(textField);
//密码输入框
textField_1 = new JPasswordField();
textField_1.setBounds(151, 208, 140, 26);
textField_1.setBorder(new MatteBorder(0, 0, 2, 0, Color.gray));
textField_1.setColumns(10);
textField_1.addKeyListener(new KeyListener(){
@Override
public void keyTyped(KeyEvent e) {
//
char[] t=textField_1.getPassword();
if(t.length>15){
e.consume();
}
}
@Override
public void keyPressed(KeyEvent e) {
}
@Override
public void keyReleased(KeyEvent e) {
}
});
textField_1.addFocusListener(new FocusListener(){
@Override
public void focusGained(FocusEvent e) {
lblNewLabel_1.setIcon(new ImageIcon("image/登录_密码图标3.jpg"));
lblNewLabel_1.setBorder(new MatteBorder(0, 0, 2, 0, Color.BLACK));
textField_1.setBorder(new MatteBorder(0, 0, 2, 0, Color.BLACK));
}
@Override
public void focusLost(FocusEvent e) {
lblNewLabel_1.setIcon(new ImageIcon("image/登录_密码图标2.jpg"));
lblNewLabel_1.setBorder(new MatteBorder(0, 0, 2, 0, Color.gray));
textField_1.setBorder(new MatteBorder(0, 0, 2, 0, Color.gray));
}
});
panel.add(textField_1);
//登录按钮
JButton btnNewButton = new JButton();
btnNewButton.setBorderPainted(false);
btnNewButton.setContentAreaFilled(false);
btnNewButton.setRequestFocusEnabled(false);
btnNewButton.setForeground(Color.WHITE);
btnNewButton.setIcon(new ImageIcon("image/安全登录1_1.jpg"));
btnNewButton.setBounds(85, 269, 241, 43);
btnNewButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if(b){
int denglu;
new Thread(new Runnable() {
public void run() {
try {
//创建套接字,连接服务器
socket=new Socket("127.0.0.1",7777);
//创建往套接字中写数据的管道,给服务器发消息,即账号和密码
pWriter=new PrintWriter(socket.getOutputStream());
//String login[]={textField.getText(),new String(textField_1.getPassword())};
//将账号、密码传给服务器
pWriter.println(textField.getText()+"/"+new String(textField_1.getPassword()));
pWriter.flush();
//创建从套接字读数据的管道,接受服务器发来的消息,即是否登录成功
bReader=new BufferedReader(new InputStreamReader(socket.getInputStream()));
String loginTrue=bReader.readLine();
if(loginTrue.equals("1")){
new ShenMiFrame();
//new MainFrame();
frame.dispose();
// JOptionPane.showMessageDialog(panel,
// “登录成功!”,
// “登录成功”,
// JOptionPane.INFORMATION_MESSAGE,
// new ImageIcon(“image/应用图标1.png”));
}else{
JOptionPane.showMessageDialog(panel,
“账号或密码不正确!”,
“登录失败”,
JOptionPane.INFORMATION_MESSAGE,
new ImageIcon(“image/应用图标1.png”));
}
pWriter.close();
} catch (UnknownHostException e1) {
// TODO 自动生成的 catch 块
e1.printStackTrace();
} catch (IOException e1) {
// TODO 自动生成的 catch 块
e1.printStackTrace();
}
}
}).start();
/*if(!Login.login(textField.getText(),new String(textField_1.getPassword()))){
JOptionPane.showMessageDialog(panel,
"账号或密码不正确!",
"登录失败",
JOptionPane.INFORMATION_MESSAGE,
new ImageIcon("image/应用图标1.png"));
}
else{
JOptionPane.showMessageDialog(panel,
"登录成功!",
"登录成功",
JOptionPane.INFORMATION_MESSAGE,
new ImageIcon("image/应用图标1.png"));
}*/
}
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO 自动生成的方法存根
btnNewButton.setIcon(new ImageIcon("image/安全登录3.jpg"));
btnNewButton.setCursor(new Cursor(Cursor.HAND_CURSOR));
String t1=textField.getText();
String t2=new String(textField_1.getPassword());
int Num;
if(t1.length()<5||t2.length()<3){
btnNewButton.setEnabled(false);
//刷新界面
((JPanel) frame.getContentPane()).updateUI();
}
else{
btnNewButton.setEnabled(true);
((JPanel) frame.getContentPane()).updateUI();
b=true;
}
}
@Override
public void mouseExited(MouseEvent e) {
// TODO 自动生成的方法存根
btnNewButton.setIcon(new ImageIcon("image/安全登录1_1.jpg"));
btnNewButton.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
btnNewButton.setEnabled(true);
((JPanel) frame.getContentPane()).updateUI();
}
});
panel.add(btnNewButton);
JLabel label = new JLabel("注册账号");
label.setBounds(10, 320, 54, 15);
label.setForeground(Color.gray);
//设置鼠标悬停时的形状
label.setCursor(new Cursor(Cursor.HAND_CURSOR));
rp=new RegistrationPanel(this);
//设置超链接
label.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
int clickTimes = e.getClickCount();
if (clickTimes == 2) {
try {
Runtime.getRuntime().exec("cmd.exe /c start "+url);
} catch (Exception ex) {
ex.printStackTrace();
}
}
else{
//切换注册面板
frame.getContentPane().remove(panel);
((JPanel) frame.getContentPane()).updateUI();
frame.getContentPane().add(rp.contentPane);
label.setForeground(Color.gray);
}
}
/*@Override
public void mousePressed(MouseEvent e) {
// TODO 自动生成的方法存根
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO 自动生成的方法存根
}*/
@Override
public void mouseEntered(MouseEvent e) {
// TODO 自动生成的方法存根
label.setForeground(Color.black);
}
@Override
public void mouseExited(MouseEvent e) {
// TODO 自动生成的方法存根
label.setForeground(Color.gray);
}
});
panel.add(label);
JLabel label_2 = new JLabel("找回密码");
label_2.setBounds(350, 320, 54, 15);
//灰色字体
label_2.setForeground(Color.gray);
//设置鼠标悬停时的形状
label_2.setCursor(new Cursor(Cursor.HAND_CURSOR));
//设置鼠标悬停时字体变化
label_2.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
label.setForeground(Color.gray);
}
@Override
public void mousePressed(MouseEvent e) {
// TODO 自动生成的方法存根
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO 自动生成的方法存根
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO 自动生成的方法存根
label_2.setForeground(Color.black);
}
@Override
public void mouseExited(MouseEvent e) {
// TODO 自动生成的方法存根
label_2.setForeground(Color.gray);
}
});
panel.add(label_2);
JCheckBox checkBox = new JCheckBox("记住账号");
checkBox.setBackground(Color.WHITE);
checkBox.setBounds(213, 240, 80, 23);
//焦点框不显示
checkBox.setFocusPainted(false);
panel.add(checkBox);
JCheckBox checkBox_1 = new JCheckBox("记住密码");
checkBox_1.setBackground(Color.WHITE);
checkBox_1.setBounds(116, 240, 80, 23);
//焦点框不显示
checkBox_1.setFocusPainted(false);
panel.add(checkBox_1);
}
}