📄 loginframe.java
字号:
package Java.ICQ;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.io.*;
public class LoginFrame extends JFrame
{
//声明变量
JPanel contentPane;
String server;//服务器名
int serport;//端口
private Socket socket;
private BufferedReader in;//输入输出流
private PrintWriter out;
//初始化界面
JLabel jLabel1 = new JLabel();
JLabel jLabel2 = new JLabel();
JTextField jicq = new JTextField();
JLabel jLabel3 = new JLabel();
JPasswordField password = new JPasswordField();
JButton login = new JButton();
JButton newuser = new JButton();
JButton quit = new JButton();
JLabel jLabel6 = new JLabel();
JTextField servername = new JTextField();
JLabel jLabel7 = new JLabel();
JTextField serverport = new JTextField();
public LoginFrame()
{
initFrame();
initUI();
addFrame();
addListener();
}
//设置窗体信息
public void initFrame()
{
contentPane = (JPanel) this.getContentPane();
contentPane.setLayout(null);
this.setResizable(false);
this.setSize(new Dimension(344, 245));
this.setTitle("登录");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
//初始化UI界面
public void initUI()
{
jLabel1.setText("请输入你的信息");
jLabel1.setBounds(new Rectangle(5, 7, 103, 18));
jLabel2.setText("你的QICQ");
jLabel2.setBounds(new Rectangle(7, 50, 58, 18));
jicq.setBounds(new Rectangle(68, 50, 97, 22));
jLabel3.setText("你的密码");
jLabel3.setBounds(new Rectangle(173, 50, 67, 18));
password.setBounds(new Rectangle(237, 50, 94, 22));
jLabel6.setText("服务器");
jLabel6.setBounds(new Rectangle(5, 100, 41, 18));
servername.setText("127.0.0.1");
servername.setBounds(new Rectangle(68, 100, 102, 22));
jLabel7.setText("端口");
jLabel7.setBounds(new Rectangle(173, 100, 41, 18));
serverport.setText("8080");
serverport.setBounds(new Rectangle(237, 100, 90, 22));
login.setText("登录");
login.setBounds(new Rectangle(10, 150, 79, 29));
newuser.setText("注册");
newuser.setBounds(new Rectangle(118, 150, 79, 29));
quit.setText("退出");
quit.setBounds(new Rectangle(228, 150, 79, 29));
//获取服务器名和端口号
server=servername.getText().toString().trim();
serport=Integer.parseInt(serverport.getText().trim());
}
//添加组件到窗体上
public void addFrame()
{
contentPane.add(jLabel1, null);
contentPane.add(jLabel2, null);
contentPane.add(jicq, null);
contentPane.add(jLabel3, null);
contentPane.add(password, null);
contentPane.add(login, null);
contentPane.add(quit, null);
contentPane.add(newuser, null);
contentPane.add(jLabel6, null);
contentPane.add(servername, null);
contentPane.add(jLabel7, null);
contentPane.add(serverport, null);
}
//为每个按钮添加事件监听
public void addListener()
{
login.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
login_actionPerformed();
}
});
newuser.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
newuser_actionPerformed();
}
});
quit.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
quit_actionPerformed();
}
});
}
//登录按扭事件处理
public void login_actionPerformed()
{
getConnectServer();
}
//注册事件处理
public void newuser_actionPerformed()
{
this.dispose();
RegisterDialog dialog=new RegisterDialog(server,serport);//打开新建窗口
}
//退出事件处理
public void quit_actionPerformed()
{
System.exit(0);
}
public void getConnectServer()
{
try
{
Socket socket=new Socket(InetAddress.getByName(server),serport);//连接服务器
BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
out.println("login");//告诉服务器我要登录
out.println(Integer.parseInt(jicq.getText().trim()));
out.println(password.getPassword());
String str=" ";
//do{
str=in.readLine().trim();//从服务器读取消息
//如果失败就告诉出错
if(str.equals("false"))
{
MessageDialog("对不起,出错了:-(","ok");
}
if(str.equals("usernameError"))
{
MessageDialog("没有这样的用户名!","消息对话框");
}
if(str.equals("passwordError"))
{
MessageDialog("密码错误!","消息对话框");
}
if(str.equals("usernamepassword"))
{
MessageDialog("用户名必需数字!","消息对话框");
}
if(str.equals("succeed"))
{
MessageDialog("登录成功!","消息对话框");
//如果成功就打开主程序
this.dispose();
int g=Integer.parseInt(jicq.getText());
MainFrm f2=new MainFrm(g,server,serport);
f2.setVisible(true);
}
in.close();
out.close();
}
catch(IOException e1)
{
JOptionPane.showMessageDialog(this,e1.getMessage());
}
catch(Exception e)
{
System.out.println("错误码");
}
finally
{
try
{
in.close();
out.close();
}
catch(Exception ee)
{
}
}
}
public void MessageDialog(String text,String title)
{
JOptionPane.showMessageDialog(this,text,title,JOptionPane.INFORMATION_MESSAGE);
}
//main主函数
public static void main(String arg[])
{
try
{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch(Exception e)
{
e.printStackTrace();
}
LoginFrame frame= new LoginFrame();
frame.setVisible(true);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -