testchatclient.java
来自「java聊天室客户端」· Java 代码 · 共 304 行
JAVA
304 行
package C;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import javax.swing.JButton;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JToolBar;
public class TestChatClient implements ActionListener
{
JFrame frame;
JPanel panel1;
JPanel panel2;
JPanel panel3;
JPanel panel4;
JPanel panel5;
JPanel panel6;
JMenuBar menubar;
JMenu menu_operate;
JMenu menu_setting;
JMenu menu_help;
JMenuItem menuItem_enter;
JMenuItem menuItem_logout;
JMenuItem menuItem_quit;
JMenuItem menuItem_usersetting;
JMenuItem menuItem_connectsetting;
JMenuItem menuItem_help;
JToolBar toolBar;
JButton button_usersetting;
JButton button_connectsetting;
JButton button_enter;
JButton button_logout;
JButton button_quit;
static JTextArea textArea;
JScrollPane js;
JLabel label1;
JComboBox comboBox1;
JLabel label2;
JComboBox comboBox2;
JCheckBoxMenuItem checkbox;
JLabel label3;
JTextField textField_message;
JButton button_send;
JTextField textField_info;
static Socket socket;
String ip = "127.0.0.1";
int port = 8888;
String username = "匆匆过客";
static DataOutputStream output;
static DataInputStream input;
static ClientThread clientThread;
public static void main(String[] args)
{
new TestChatClient().client();
}
public void client(){
frame = new JFrame("聊天室客户端");
panel1 = new JPanel();
panel2 = new JPanel();
panel3 = new JPanel();
panel4 = new JPanel();
panel5 = new JPanel();
panel6 = new JPanel();
panel1.setLayout(new BorderLayout());
panel2.setLayout(new BorderLayout());
panel3.setLayout(new BorderLayout());
panel4.setLayout(new BorderLayout());
menubar = new JMenuBar();
menu_operate = new JMenu("操作");
menu_setting = new JMenu("设置");
menu_help = new JMenu("帮助");
menubar.add(menu_operate);
menubar.add(menu_setting);
menubar.add(menu_help);
menuItem_enter = new JMenuItem("用户登录");
menuItem_enter.addActionListener(this);
menuItem_logout = new JMenuItem("用户注销");
menuItem_logout.addActionListener(this);
menuItem_quit = new JMenuItem("退出");
menuItem_quit.addActionListener(this);
menu_operate.add(menuItem_enter);
menu_operate.add(menuItem_logout);
menu_operate.add(menuItem_quit);
menuItem_usersetting = new JMenuItem("用户设置");
menuItem_usersetting.addActionListener(this);
menuItem_connectsetting = new JMenuItem("连接设置");
menuItem_connectsetting.addActionListener(this);
menu_setting.add(menuItem_usersetting);
menu_setting.add(menuItem_connectsetting);
menuItem_help = new JMenuItem("帮助");
menuItem_help.addActionListener(this);
menu_help.add(menuItem_help);
toolBar = new JToolBar();
button_usersetting = new JButton("用户设置");
button_usersetting.addActionListener(this);
button_connectsetting = new JButton("连接设置");
button_connectsetting.addActionListener(this);
button_enter = new JButton("登录");
button_enter.addActionListener(this);
button_logout = new JButton("注销");
button_logout.addActionListener(this);
button_quit = new JButton("退出");
button_quit.addActionListener(this);
toolBar.add(button_usersetting);
toolBar.add(button_connectsetting);
toolBar.addSeparator();
toolBar.add(button_enter);
toolBar.add(button_logout);
toolBar.addSeparator();
toolBar.add(button_quit);
textArea = new JTextArea(15,25);
textArea.setLineWrap(true);
js = new JScrollPane(textArea, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
label1 = new JLabel("发送至:");
String[] s1 = {"所有人"};
comboBox1 = new JComboBox(s1);
label2 = new JLabel("表情:");
String[] s2 = {"微笑地","高兴地","轻轻地","生气地","小心地","静静地"};
comboBox2 = new JComboBox(s2);
checkbox = new JCheckBoxMenuItem("悄悄话");
label3 = new JLabel("发送消息:");
textField_message = new JTextField(16);
button_send = new JButton("发送");
button_send.addActionListener(this);
textField_info = new JTextField();
panel1.add(menubar);
panel5.add(label3);
panel5.add(textField_message);
panel5.add(button_send);
panel2.add(textField_info);
panel6.add(label1);
panel6.add(comboBox1);
panel6.add(label2);
panel6.add(comboBox2);
panel6.add(checkbox);
panel4.add(js,BorderLayout.NORTH);
panel4.add(panel6,BorderLayout.SOUTH);
panel3.add(toolBar,BorderLayout.NORTH);
panel3.add(panel4,BorderLayout.CENTER);
panel3.add(panel5,BorderLayout.SOUTH);
frame.add(panel1,BorderLayout.NORTH);
frame.add(panel2,BorderLayout.SOUTH);
frame.add(panel3);
frame.pack();
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
frame.setLocation((d.width - frame.getWidth())/2
,(d.height - frame.getHeight())/2);
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public void actionPerformed(ActionEvent e){
String s = e.getActionCommand();
if(s.equals("用户设置")){
User user = new User();
user.init();
}else if(s.equals("连接设置")){
Connect connect = new Connect();
connect.init();
}else if(s.equals("登录") || s.equals("用户登录")){
Enter();
}else if(s.equals("注销") || s.equals("用户注销")){
Logout();
}else if(s.equals("退出")){
int result = JOptionPane.showConfirmDialog(null,"真的要退出吗?","退出",JOptionPane.YES_NO_OPTION);
if(result == JOptionPane.OK_OPTION){
System.exit(0);
}
}else if(s.equals("帮助")){
JOptionPane.showMessageDialog(null,"1、设置所要连接服务端的IP地址和端口"+
"(默认设置为\n 127.0.0.1:8888)。\n"+
"2、输入你的用户名(默认设置为:匆匆过客)。\n"+
"3、点击“登录”便可以连接到指定的服务器;\n"+
" 点击“注销”可以和服务器端开连接。\n"+
"4、选择需要接受消息的用户,在消息栏中写入消息,\n"+
" 同时选择表情,之后便可发送消息。\n","帮助",JOptionPane.PLAIN_MESSAGE);
}else if(s.equals("发送")){
SendMessage();
}
}
public void Enter(){
try
{
socket = new Socket(ip,port);
OutputStream os = socket.getOutputStream();
output = new DataOutputStream(os);
InputStream is = socket.getInputStream();
input = new DataInputStream(is);
clientThread = new ClientThread();
clientThread.start();
String username = User.userName + "上线...."+"\n";
output.writeUTF(username);
}
catch (UnknownHostException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
}
public void Logout(){
try
{
output.writeUTF("用户下线");
input.close();
output.close();
socket.close();
}
catch (IOException e)
{
e.printStackTrace();
}
textArea.append("已经与服务器断开连接...\n");
}
public void SendMessage(){
username = User.userName + " ";
String status = "";
if(checkbox.isSelected()){
status = "说悄悄话 ";
}
String action = comboBox2.getSelectedItem().toString() + " ";
String msg = username + action + status + textField_message.getText() + "\n";
textArea.append(msg);
try
{
output.writeUTF(msg);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?