📄 client.java
字号:
/**********************************************************************************/
/////////////////////////////////////客户端源文件////////////////////////////////////
/**********************************************************************************/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.io.*;
import java.util.*;
public class Client
{
public static void main(String[] args)
{
String UsrName = new String();
new Client(UsrName);
}
public Client(String UsrName)
{
MyFrame myFrame = new MyFrame(UsrName);
}
}
class MyFrame extends Frame
{
Panel p1;
Panel p2;
Panel p3;
JTextArea show;
JScrollPane scrollPane ;
TextField input;
Label port;
Label ip;
TextField tPort;
TextField tIp;
Button submit;
Button login;
Button logout;
Button theme;
Socket s = null;
static String UsrName;
DataOutputStream dos = null;
DataInputStream dis = null;
private boolean bConnect = false;
private static int cor = 1;
private JMenuBar menuBar ;
private JMenu setFMenu;
private JMenuItem jmi1, jmi2, jmi3, jmi4, jmi5, jmi6;
public MyFrame(String UsrName)
{
init(UsrName);
}
public void init(String UsrName)
{
/***********************************SHOW BEGIN*************************************************/
p1 = new Panel();
show = new JTextArea(14,51);
scrollPane = new JScrollPane(show,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER) ;
show.setEditable(false);
show.setBackground(Color.lightGray);
p1.add( scrollPane );
add(p1,BorderLayout.CENTER);
/***********************************SHOW END****************************************************/
/***********************************PANEL2 BEGIN************************************************/
this.UsrName = UsrName;
this.setTitle("夜雪聊天室-[" + UsrName + "]");
p2 = new Panel(new FlowLayout(FlowLayout.LEFT));
port = new Label("PORT");
tPort = new TextField(7);
ip = new Label("IP");
tIp = new TextField(25);
login = new Button("Login");
logout = new Button("帐号");
theme = new Button("主题");
p2.add(port);
p2.add(tPort);
p2.add(ip);
p2.add(tIp);
p2.add(login);
login.addActionListener(new submitAction());
p2.add(logout);
logout.addActionListener(new submitAction());
p2.add(theme);
theme.addActionListener(new submitAction());
add(p2,BorderLayout.NORTH);
setResizable(false);
/***********************************PANEL2 END************************************************/
/***********************************设置菜单模块***********************************************/
menuBar = new JMenuBar();
setFMenu = new JMenu("系统设置");
menuBar.add(setFMenu);
p2.add( menuBar ) ;
jmi1 = new JMenuItem("常用短语");
jmi1.addActionListener(new JMenuSet());
setFMenu.add(jmi1);
jmi2 = new JMenuItem("复制记录");
jmi2.addActionListener(new JMenuSet());
setFMenu.add(jmi2);
jmi3 = new JMenuItem("记录另存为");
jmi3.addActionListener(new JMenuSet());
setFMenu.add(jmi3);
jmi4 = new JMenuItem("设置显示");
jmi4.addActionListener(new JMenuSet());
setFMenu.add(jmi4);
jmi5 = new JMenuItem("关于..");
jmi5.addActionListener(new JMenuSet());
setFMenu.add(jmi5);
jmi6 = new JMenuItem("退出");
jmi6.addActionListener(new JMenuSet());
setFMenu.add(jmi6);
/***********************************PANEL3 BEGIN**********************************************/
p3 = new Panel(new FlowLayout(FlowLayout.LEFT));
input = new TextField(70);
submit = new Button("发送");
p3.add(input);
p3.add(submit);
input.addActionListener(new inputAction());
submit.addActionListener(new submitAction());
add(p3,BorderLayout.SOUTH);
/***********************************PANEL3 END************************************************/
/***********************************FRAM BEGIN*************************************************/
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent E)
{
System.exit(0);
}
});
this.setSize(300, 300);
setLocation(100,100);
pack();
setVisible(true);
/************************************FRAM END**************************************************/
}
class submitAction implements ActionListener
{
int i = 1;
public void actionPerformed(ActionEvent E)
{
if ("发送".equals(E.getActionCommand()))
{
String str = UsrName + ":" + input.getText().trim(); //数据由用户名+信息构成
input.setText("");
SendMes(str);
}
else if ("Login".equals(E.getActionCommand()))
{
if(i == 1)
{
String c_serverIP = tIp.getText(); //记录服务器IP地址
int c_PORT = Integer.parseInt(tPort.getText()); //记录端口
if(c_PORT == 8888)
{
int mc_PORT = 1001;
new Login(c_serverIP, mc_PORT);
new Login(this); //给Login类传送当前对象指针
i++;
}
else
JOptionPane.showMessageDialog(null, "端口不匹配!!!\n请检查并将端口设置为:[8888]", "登陆出错!", JOptionPane.ERROR_MESSAGE);
}
else
JOptionPane.showMessageDialog(null, "你的帐户已经登陆!", "重复登陆!", JOptionPane.ERROR_MESSAGE);
}
else if ("帐号".equals(E.getActionCommand()))
{
String select = "null";
select = String.valueOf(JOptionPane.showInputDialog("请选择你要进行的操作:\nC) 切换登陆新帐户\nR) 重启客户端程序"));
if(select.equals("C") || select.equals("c")) //选择用户所需要的数据
{
int mc_PORT = 1001;
String c_serverIP = tIp.getText();
new Login(c_serverIP, mc_PORT);
}
else if(select.equals("R") || select.equals("r"))
{
dispose();
new MyFrame(UsrName);
}
else if(select.equals("null"))
{
}
else
JOptionPane.showMessageDialog(null, "无此选项!\n请输入合法范围内的数据选项!", "选择出错!", JOptionPane.ERROR_MESSAGE);
}
else if ("主题".equals(E.getActionCommand()))
{
switch(cor)
{
case 1: show.setBackground(Color.DARK_GRAY);
show.setForeground(Color.CYAN);
break;
case 2: show.setBackground(Color.BLUE);
show.setForeground(Color.PINK);
break;
case 3: show.setBackground(Color.ORANGE);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -