📄 chatroomframe.java
字号:
package chat.frame;
import java.awt.BorderLayout;
import javax.swing.JFrame;
import java.awt.Container;
import java.awt.Dimension;
import javax.swing.*;
import java.awt.*;
import chat.tools.*;
import java.awt.Rectangle;
import javax.swing.BorderFactory;
import java.awt.Font;
import java.awt.event.MouseEvent;
import java.awt.event.MouseAdapter;
import java.net.Socket;
import java.io.ObjectOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.io.BufferedReader;
import java.io.ObjectInputStream;
import java.io.PrintWriter;
import java.util.Iterator;
import java.net.ServerSocket;
import java.awt.event.WindowEvent;
import java.awt.event.WindowAdapter;
import chat.client.MyClient;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2006</p>
*
* <p>Company: zte</p>
*
* @author kwatt
* @version 1.0
*/
/*
*必须要在其中声明一个内部线程类用于实现不断更新聊天页面,还要有一个线程刷新人员列表
*/
public class ChatRoomFrame extends JFrame {
public ChatRoomFrame() {
try {
jbInit();
} catch (Exception exception) {
exception.printStackTrace();
}
}
public void setClient(MyClient client){
this.client=client;
}
private void jbInit() throws Exception {
this.setSize(new Dimension(800,600));
Container contentPane=this.getContentPane();
contentPane.setForeground(SystemColor.menuText);
contentPane.setBackground(SystemColor.menu);
contentPane.setSize(new Dimension(800,600));
contentPane.setLayout(null);
Tools.setCenter(this);
this.setVisible(true);
this.addWindowListener(new ChatRoomFrame_this_windowAdapter(this));
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setResizable(false);
jPanel1.setBorder(BorderFactory.createEtchedBorder());
jPanel1.setBounds(new Rectangle(2, 479, 621, 107));
jPanel1.setLayout(null);
jPanel2.setBorder(BorderFactory.createEtchedBorder());
jPanel2.setBounds(new Rectangle(625, 13, 171, 581));
jPanel2.setLayout(null);
jPanel3.setBorder(BorderFactory.createEtchedBorder());
jPanel3.setBounds(new Rectangle(3, 83, 620, 394));
jPanel3.setLayout(null);
jLabel1.setFont(new java.awt.Font("宋体", Font.PLAIN, 25));
jLabel1.setForeground(Color.red);
jLabel1.setToolTipText("");
jLabel1.setHorizontalAlignment(SwingConstants.CENTER);
jLabel1.setHorizontalTextPosition(SwingConstants.CENTER);
jLabel1.setText("Chat Room");
jLabel1.setBounds(new Rectangle(200, 28, 207, 44));
jLabel2.setText("用户:");
jLabel2.setBounds(new Rectangle(7, 524, 50, 22));
nameText.setBounds(new Rectangle(85, 524, 73, 26));
jScrollPane1.setBounds(new Rectangle(1, 2, 167, 511));
jLabel3.setText("请在右面选择聊天者");
jLabel3.setBounds(new Rectangle(10, 9, 116, 23));
toText.setBounds(new Rectangle(143, 9, 100, 21));
jLabel4.setText("请输入聊天内容:");
jLabel4.setBounds(new Rectangle(10, 35, 115, 23));
jButton1.setBounds(new Rectangle(447, 43, 67, 25));
jButton1.setText("提交");
jButton1.addActionListener(new ChatRoomFrame_jButton1_actionAdapter(this));
jButton2.setBounds(new Rectangle(533, 43, 68, 25));
jButton2.setText("清空");
jButton2.addActionListener(new ChatRoomFrame_jButton2_actionAdapter(this));
userList.addMouseListener(new ChatRoomFrame_userList_mouseAdapter(this));
userList.setModel(listModel);
jScrollPane2.setBounds(new Rectangle(143, 39, 286, 31));
jScrollPane3.setBounds(new Rectangle(2, 5, 616, 387));
allCheckBox.setText("所有人");
allCheckBox.setBounds(new Rectangle(292, 10, 85, 23));
jPanel1.add(jLabel3);
jPanel1.add(toText);
jPanel1.add(jLabel4);
jPanel1.add(jScrollPane2);
jPanel1.add(jButton1);
jPanel1.add(jButton2);
jPanel1.add(allCheckBox);
jScrollPane2.getViewport().add(msgText);
contentPane.add(jPanel2);
jPanel2.add(jScrollPane1);
jScrollPane1.getViewport().add(userList);
jPanel2.add(nameText);
jPanel2.add(jLabel2);
contentPane.add(jPanel3);
jPanel3.add(jScrollPane3);
jScrollPane3.getViewport().add(chatText);
contentPane.add(jLabel1);
contentPane.add(jPanel1);
}
JPanel jPanel1 = new JPanel();
JPanel jPanel2 = new JPanel();
JPanel jPanel3 = new JPanel();
JLabel jLabel1 = new JLabel();
JLabel jLabel2 = new JLabel();
public JLabel nameText = new JLabel();
JScrollPane jScrollPane1 = new JScrollPane();
public JList userList = new JList();
JLabel jLabel3 = new JLabel();
JTextField toText = new JTextField();
JLabel jLabel4 = new JLabel();
JButton jButton1 = new JButton();
JButton jButton2 = new JButton();
JScrollPane jScrollPane2 = new JScrollPane();
JTextArea msgText = new JTextArea();
JScrollPane jScrollPane3 = new JScrollPane();
public JTextArea chatText = new JTextArea();
public MyClient client;
public DefaultListModel listModel = new DefaultListModel();
JCheckBox allCheckBox = new JCheckBox();
public void userList_mouseClicked(MouseEvent e) {
String userName=(String)this.userList.getSelectedValue();
this.toText.setText(userName);
}
public void this_windowOpened(WindowEvent e) {
// System.out.println(userList);
// client.getUserList();
}
public void jButton2_actionPerformed(ActionEvent e) {
msgText.setText("");
}
public void jButton1_actionPerformed(ActionEvent e) {
if(toText.getText().equals("")&&allCheckBox.isSelected()==false){
JOptionPane.showMessageDialog(null,"对不起您没有选择要发送的");
}else if(!toText.getText().equals("")&&allCheckBox.isSelected()==true){
JOptionPane.showMessageDialog(null,"对不起不能在选择所有人的同时选择用户");
}else if(!toText.getText().equals("")){
String toUser=toText.getText();
String toMes=msgText.getText();
String fromUser=nameText.getText();
if(toUser.equals(nameText.getText())){
JOptionPane.showMessageDialog(null,"对不起不能向自己发消息");
}else{
client.sendMessage(fromUser,toUser,toMes);
this.chatText.append("\n您对"+toUser+"说: "+toMes);
// this.msgText.insert("\n您对"+toUser+"说: "+toMes,msgText.getText().length());
}
}else if(allCheckBox.isSelected()==true){
if(msgText.getText().equals("")){
JOptionPane.showMessageDialog(null,"您没有输入聊天内容。。");
}else{
String toMes = msgText.getText();
String fromUser = nameText.getText();
client.sendToAll(fromUser, toMes);
}
}
}
public void this_windowClosing(WindowEvent e) {
client.logout(this.nameText.getText());
}
}
class ChatRoomFrame_jButton1_actionAdapter implements ActionListener {
private ChatRoomFrame adaptee;
ChatRoomFrame_jButton1_actionAdapter(ChatRoomFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton1_actionPerformed(e);
}
}
class ChatRoomFrame_jButton2_actionAdapter implements ActionListener {
private ChatRoomFrame adaptee;
ChatRoomFrame_jButton2_actionAdapter(ChatRoomFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton2_actionPerformed(e);
}
}
class ChatRoomFrame_userList_mouseAdapter extends MouseAdapter {
private ChatRoomFrame adaptee;
ChatRoomFrame_userList_mouseAdapter(ChatRoomFrame adaptee) {
this.adaptee = adaptee;
}
public void mouseClicked(MouseEvent e) {
adaptee.userList_mouseClicked(e);
}
}
class ChatRoomFrame_this_windowAdapter extends WindowAdapter {
private ChatRoomFrame adaptee;
ChatRoomFrame_this_windowAdapter(ChatRoomFrame adaptee) {
this.adaptee = adaptee;
}
public void windowOpened(WindowEvent e) {
adaptee.this_windowOpened(e);
}
public void windowClosing(WindowEvent e) {
adaptee.this_windowClosing(e);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -