import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.net.*;
import java.io.*;
public class ClientFrame extends JFrame implements ActionListener{
JTextField userName;
JPasswordField userPwd;
JLabel lqq, lpwd;
JButton login, cancle;
JPanel p1, p2, p3;
ImageIcon image;
/*界面中的问题1:图片的正常显示问题
问题2:组件的大小设置问题*/
public ClientFrame() {
userName = new JTextField(20);
userPwd = new JPasswordField();
lqq = new JLabel("QQ号码");
lpwd = new JLabel("QQ密码");
p2 = new JPanel();
p2.setLayout(new GridLayout(2, 1));
p2.add(lqq);
p2.add(userName);
p2.add(lpwd);
p2.add(userPwd);
//设置p2的边框
p2.setBorder(BorderFactory.createTitledBorder("登录信息"));
login = new JButton("登录");
cancle = new JButton("取消");
login.addActionListener(this);
cancle.addActionListener(this);
p1 = new JPanel();
//修改图片路径
image = new ImageIcon("E://workspace/Demo/qqImage/gg.jpg");
JLabel l1 = new JLabel(image);
p1.add(login);
p1.add(cancle);
//p1.add(l1);
Container cn = this.getContentPane();
//cn.setLayout(new GridLayout(3,1));
cn.add(l1, BorderLayout.NORTH);
cn.add(p2, BorderLayout.CENTER);
cn.add(p1, BorderLayout.SOUTH);
this.setSize(400, 300);
this.setVisible(true);
this.setTitle("Java版QQ");
}
public static void main(String[] args) {
ClientFrame qqLogin = new ClientFrame();
/* 改变界面外观
try{
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
SwingUtilities.updateComponentTreeUI(qqLogin);
}catch(Exception e){}*/
}
public void actionPerformed(ActionEvent e) {
//连接服务器
Socket socket=new Socket("localhost",9999);
//发送到服务器
String user=userName.getText();
String pwd=userPwd.getText();
OutputStream os=socket.getOutputStream();
PrintWriter pw=new PrintWriter(os,true);
pw.println(user);
pw.println(pwd);
//从服务器得到反馈信息
//根据信息采取相关操作
try {
if (e.getSource() == login) {
//登录处理
Socket s = new Socket("127.0.0.1", 2020);
//提取用户名,密码
String name=userName.getText().trim();
String pwd=userPwd.getText().trim();
//以数据流的形式发往服务器,进行验证
OutputStream os=s.getOutputStream();
OutputStreamWriter osw=new OutputStreamWriter(os);
//PrintWriter和PrintStream类的作用是提供一组重载的print和println
//方法,用于把各种类型的数据转换为字符串形式输出,输出到与其相连的数据介质上
PrintWriter pw=new PrintWriter(osw,true);
//用户名密码写入输出流
pw.println(name+"--&&--"+pwd);
//分析从服务器段发送来的输入流,得出用户是否合法的相应操作
InputStream is=s.getInputStream();
InputStreamReader isr=new InputStreamReader(is);
BufferedReader br=new BufferedReader(isr);
String result=br.readLine();
if(result.equals("ok")){
this.setVisible(false);
//JOptionPane.showMessageDialog(this,"欢迎你登录!");
new UserList();
}
else{
JOptionPane.showMessageDialog(this,"密码错误!");
}
}
else if (e.getSource() == cancle) {
userName.setText("");
userPwd.setText("");
}
}
catch (Exception ee) {}
}
}