package client;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.border.LineBorder;
@SuppressWarnings("serial")
public class CUi extends JFrame {
private JTextArea msgBox;
private String userName;
private JTextField msgInput;
private JComboBox chooseUser;
private JList userList;
private Client client;
private JPanel panel_1;
public JPanel getPanel_1() {
return panel_1;
}
public void setPanel_1(JPanel panel_1) {
this.panel_1 = panel_1;
}
public Client getClient() {
return client;
}
public void setClient(Client client) {
this.client = client;
}
public void launch() {
addWindowListener(new WindowAdapter() {
public void windowClosing(final WindowEvent e) {
dispose();
Socket s = client.getClient();
try {
if(s != null) {
OutputStream os = s.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);
dos.writeUTF("bye");
s.shutdownOutput();
}
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
getContentPane().setLayout(null);
setResizable(false);
setSize(new Dimension(500, 360));
setLocation(400, 300);
setTitle("Chat[ " + userName + "]");
final JPanel panel = new JPanel();
panel.setBounds(0, 0, 494, 300);
panel.setLayout(null);
panel.setPreferredSize(new Dimension(500, 300));
getContentPane().add(panel);
final JPanel panel_2 = new JPanel();
panel_2.setLayout(null);
panel_2.setBounds(0, 0, 144, 300);
panel.add(panel_2);
userList = new JList();
userList.setBackground(UIManager.getColor("TabbedPane.light"));
userList.setBorder(new LineBorder(Color.black, 1, false));
userList.setBounds(10, 10, 134, 280);
panel_2.add(userList);
final JPanel panel_3 = new JPanel();
panel_3.setLayout(null);
panel_3.setBounds(145, 0, 349, 300);
panel.add(panel_3);
final JScrollPane scrollPane = new JScrollPane();
scrollPane.setAutoscrolls(true);
scrollPane.setBounds(10, 10, 329, 280);
panel_3.add(scrollPane);
msgBox = new JTextArea();
msgBox.setBorder(new LineBorder(Color.black, 1, false));
msgBox.setLineWrap(true);
scrollPane.setViewportView(msgBox);
panel_1 = new JPanel();
panel_1.setLayout(null);
panel_1.setBounds(0, 302, 494, 33);
panel_1.setPreferredSize(new Dimension(0, 70));
getContentPane().add(panel_1);
chooseUser = new JComboBox();
chooseUser.setBounds(10, 0, 135, 27);
chooseUser.addItem("All");
panel_1.add(chooseUser);
msgInput = new JTextField();
msgInput.setBounds(158, 2, 326, 25);
panel_1.add(msgInput);
setVisible(true);
msgInput.addKeyListener(new KeyAdapter() {
public void keyReleased(KeyEvent e) {
int key = e.getKeyCode();
if(key == KeyEvent.VK_ENTER) {
String message = getMsgInput().getText();
getMsgInput().setText("");
sendMessage(chooseUser.getSelectedItem() + ":" + message);
}
}
});
client = new Client(this);
client.launch();
}
protected void sendMessage(String message) {
OutputStream os = null;
DataOutputStream dos = null;
try {
os = this.client.getClient().getOutputStream();
dos = new DataOutputStream(os);
dos.writeUTF(message);
} catch(IOException e) {
e.printStackTrace();
}
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public JTextField getMsgInput() {
return msgInput;
}
public void setMsgInput(JTextField msgInput) {
this.msgInput = msgInput;
}
public JComboBox getChooseUser() {
return chooseUser;
}
public void setChooseUser(JComboBox chooseUser) {
this.chooseUser = chooseUser;
}
public JList getUserList() {
return userList;
}
public void setUserList(JList userList) {
this.userList = userList;
}
public void setMsgBox(JTextArea msgBox) {
this.msgBox = msgBox;
}
public void update(String message) {
Pattern pMessage = Pattern.compile("^message:");
Pattern pList = Pattern.compile("^list:");
Matcher mMessage = pMessage.matcher(message);
Matcher mList = pList.matcher(message);
String msg = "";
if(mMessage.find()) {
msg = message.replace(mMessage.group(), "");
this.msgBox.setText(this.msgBox.getText() + msg + "\n");
} else if(mList.find()) {
msg = message.replace(mList.group(), "");
String[] list = msg.split(",");
userList.setListData(list);
String[] items = new String[list.length + 1];
items[0] = "All";
for(int i=1; i<items.length; i++) {
items[i] = list[i-1];
}
this.panel_1.remove(chooseUser);
chooseUser = new JComboBox(items);
chooseUser.setBounds(10, 0, 135, 27);
this.panel_1.add(chooseUser);
// for(int i=chooseUser.getItemCount() - 1; i<list.length; i++) {
// chooseUser.addItem(list[i]);
// }
}
}
public CUi() {
super();
}
public JTextArea getMsgBox() {
return msgBox;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Chat.rar (70个子文件)
Chat
.project 380B
bin
.svn
props
entries 187B
text-base
format 2B
tmp
props
text-base
prop-base
prop-base
server
SUi.class 3KB
AcceptThread.class 2KB
ServerDispatch.class 3KB
ServerMain.class 451B
SUi$3.class 1KB
Server.class 5KB
SendList.class 1KB
SUi$1.class 645B
SUi$2.class 1KB
client
CUi$1.class 1KB
Repaint.class 851B
Test.class 466B
Logon$1.class 620B
CUi$2.class 1KB
Client.class 2KB
Logon$2.class 966B
Logon.class 2KB
CUi.class 6KB
ClientDispatch.class 1KB
Logon$3.class 1022B
.svn
props
entries 943B
text-base
.fatjar.svn-base 333B
.project.svn-base 380B
Chat_Client.jar.svn-base 7.59MB
.classpath.svn-base 3KB
Chat_Server.jar.svn-base 7.59MB
format 2B
tmp
props
text-base
prop-base
prop-base
Chat_Client.jar.svn-base 53B
Chat_Server.jar.svn-base 53B
Chat_Server.jar 7.59MB
src
.svn
props
entries 213B
text-base
format 2B
tmp
props
text-base
prop-base
prop-base
server
Server.java 3KB
ServerMain.java 124B
ServerDispatch.java 2KB
.svn
props
entries 1KB
text-base
ServerMain.java.svn-base 124B
SUi.java.svn-base 3KB
ServerDispatch.java.svn-base 2KB
Server.java.svn-base 3KB
AcceptThread.java.svn-base 1KB
SendList.java.svn-base 980B
format 2B
tmp
props
text-base
prop-base
prop-base
ServerDispatch.java.svn-base 28B
AcceptThread.java 1KB
SUi.java 3KB
SendList.java 980B
client
.svn
props
entries 1KB
text-base
Client.java.svn-base 1KB
Test.java.svn-base 138B
CUi.java.svn-base 6KB
Logon.java.svn-base 2KB
Repaint.java.svn-base 394B
ClientDispatch.java.svn-base 783B
format 2B
tmp
props
text-base
prop-base
prop-base
CUi.java.svn-base 28B
ClientDispatch.java.svn-base 28B
Test.java 138B
Logon.java 2KB
ClientDispatch.java 783B
Repaint.java 394B
Client.java 1KB
CUi.java 6KB
Chat_Client.jar 7.59MB
.fatjar 336B
.classpath 3KB
Chat_Client192.jar 7.59MB
共 70 条
- 1
资源评论
goosman
- 粉丝: 3339
- 资源: 63
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功