📄 main.java
字号:
package com.client;
import java.awt.BorderLayout;
import java.awt.FileDialog;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.io.*;
import java.net.*;
import javax.swing.*;
import java.sql.* ;
import com.server.DataBase ;
/**
* @author gt.Cloud
*
* TODO 要更改此生成的类型注释的模板,请转至 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
public class Main extends JFrame implements ActionListener, Runnable {
JTextField tt = new JTextField();
JTextArea cc = new JTextArea();
JComboBox c_user = new JComboBox();
private Socket s;
private String u ;
public void setSocket(Socket s , String username) {
this.s = s;
this.u = username ;
}
Main(boolean b1 , boolean b2) {
this.setTitle(u) ;
//设置窗体属性
this.setSize(400, 600);
this.setResizable(false);
int width = (int) Toolkit.getDefaultToolkit().getScreenSize()
.getWidth();
int height = (int) Toolkit.getDefaultToolkit().getScreenSize()
.getHeight();
this.setLocation((width - 400) / 2, (height - 600) / 2);
//new一大堆组件
JMenuBar menuBar = new JMenuBar() ;
JMenu m_control = new JMenu("操作") ;
JMenuItem mi_email = new JMenuItem("发送邮件") ;
JMenuItem mi_note = new JMenuItem("发送通知") ;
mi_note.setVisible(b1) ;
JMenuItem mi_exit = new JMenuItem("退出") ;
JMenu m_menage = new JMenu("信息") ;
JMenuItem mi_personal = new JMenuItem("个人信息") ;
JMenuItem mi_modifypass = new JMenuItem("修改密码") ;
JMenuItem mi_modify = new JMenuItem("查找并修改") ;
mi_modify.setVisible(b2) ;
JMenu m_friend = new JMenu("好友") ;
m_friend.setVisible(b2) ;
JMenuItem mi_addf = new JMenuItem("添加用户") ;
JMenuItem mi_movef = new JMenuItem("查找并删除") ;
JButton b_send = new JButton("发送");
JButton b_file = new JButton("文件传送");
JScrollPane p_cc = new JScrollPane(cc); //设置滚动条
c_user.addItem("All");
//布置菜单
m_control.add(mi_email) ;
m_control.add(mi_note) ;
m_control.add(mi_exit) ;
m_menage.add(mi_personal) ;
m_menage.add(mi_modifypass) ;
m_menage.add(mi_modify) ;
m_friend.add(mi_addf) ;
m_friend.add(mi_movef) ;
menuBar.add(m_control) ;
menuBar.add(m_menage) ;
menuBar.add(m_friend) ;
this.setJMenuBar(menuBar) ;
//注册事件监听
mi_email.addActionListener(this) ;
mi_note.addActionListener(this) ;
mi_exit.addActionListener(this) ;
mi_personal.addActionListener(this) ;
mi_modifypass.addActionListener(this) ;
mi_modify.addActionListener(this) ;
mi_addf.addActionListener(this) ;
mi_movef.addActionListener(this) ;
b_send.addActionListener(this);
b_file.addActionListener(this);
;
//布置小面板
JPanel p_xiao = new JPanel();
p_xiao.setLayout(new GridLayout(1, 3));
p_xiao.add(c_user);
p_xiao.add(b_send);
p_xiao.add(b_file);
//布置大面板
JPanel p_da = new JPanel();
p_da.setLayout(new GridLayout(2, 1));
p_da.add(tt);
p_da.add(p_xiao);
//布置窗体
this.setLayout(new BorderLayout());
this.add(p_da, BorderLayout.NORTH);
this.add(p_cc, BorderLayout.CENTER);
//读聊天记录
try {
File f = new File("d:/聊天记录.wy");
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);
while (br.ready()) {
cc.append(br.readLine() + "\n");
}
} catch (Exception ee) {
}
//启动线程
Thread t = new Thread(this);
t.start();
}
/*
* (非 Javadoc)
*
* @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
*/
public void actionPerformed(ActionEvent arg0) {
if (arg0.getActionCommand().equals("发送")) {
//tt------------------------->cc
cc.append("对"+c_user.getSelectedItem()+"说:"+tt.getText() + "\n");
//tt------------------------->file 聊天记录
try {
File f = new File("d:/聊天记录.wy");
FileWriter fw = new FileWriter(f, true);
PrintWriter pw = new PrintWriter(fw);
pw.println(tt.getText());
pw.close();
} catch (Exception e) {
}
//(12)
//tt------------------------->server
try {
OutputStreamWriter osw = new OutputStreamWriter(s
.getOutputStream());
PrintWriter pw = new PrintWriter(osw, true);
pw.println("xiaoxi%"+u+"%"+c_user.getSelectedItem() + "%" + tt.getText());
} catch (Exception e) {
}
tt.setText("");
}
if (arg0.getActionCommand().equals("文件传送")) {
try {
JFileChooser fc = new JFileChooser();
fc.showOpenDialog(this);
File filename = fc.getSelectedFile();
OutputStream os = s.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os);
PrintWriter pw = new PrintWriter(osw, true);
pw.println("file%" + c_user.getSelectedItem() + "%"
+ filename.getName() );
byte tmp[] = new byte[4096];
FileInputStream fis = new FileInputStream(filename);
int ll = 0;
while (ll != -1) {
ll = fis.read(tmp);
os.write(tmp, 0, ll);
}
} catch (Exception ee) {
}
}
if(arg0.getActionCommand().equals("发送邮件")){
}
if(arg0.getActionCommand().equals("发送通知")){
NoteFrame nf = new NoteFrame() ;
nf.setSocket(s , u ) ;
}
if(arg0.getActionCommand().equals("退出")){
System.exit(0) ;
}
if(arg0.getActionCommand().equals("个人信息")){
getInfo() ;
}
if(arg0.getActionCommand().equals("修改密码")){
ModifyPass mp = new ModifyPass() ;
mp.setSocket(s , u) ;
}
if(arg0.getActionCommand().equals("查找并修改")){
SearchFrame sf = new SearchFrame() ;
sf.setSocket(s , u) ;
}
if(arg0.getActionCommand().equals("添加用户")){
System.out.println ("aaaa") ;
AddFrame af = new AddFrame() ;
af.setSocket(s , u) ;
}
if(arg0.getActionCommand().equals("查找并删除")){
SearchFrame sf = new SearchFrame() ;
sf.setSocket(s , u) ;
}
}
public void getInfo(){
try {
Connection cn = DataBase.getConnection() ;
Statement st = cn.createStatement() ;
ResultSet rs = st.executeQuery("select username,email,author from info where username='"+u+"'") ;
if(rs.next()){
JFrame baseInfo = new JFrame("个人信息") ;
baseInfo.setSize(250 , 200) ;
JPanel p_info = new JPanel() ;
JLabel username = new JLabel("用户名:"+rs.getString(1)) ;
JLabel email = new JLabel("邮箱:"+rs.getString(2)) ;
JLabel author = new JLabel("身份:"+rs.getString(3)) ;
p_info.setLayout(new GridLayout(3 , 1)) ;
p_info.add(username) ;
p_info.add(email) ;
p_info.add(author) ;
baseInfo.setLayout(new BorderLayout()) ;
baseInfo.add(p_info , BorderLayout.CENTER) ;
baseInfo.setResizable(false) ;
baseInfo.setVisible(true) ;
}
}
catch (Exception ex) {
}
}
//(16)
//接收线程
public void run() {
try {
InputStream is = s.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
while (true) {
String message = br.readLine();
if(message.split("%")[0].equals("find")){
ModifyFrame mf = new ModifyFrame() ;
mf.setSocket(s , u ) ;
mf.setInfo(message.split("%")[1].split("#")[0] ,message.split("%")[1].split("#")[1],message.split("%")[1].split("#")[2]) ;
mf.init() ;
}
if(message.split("%")[0].equals("find_err")){
javax.swing.JOptionPane op = new JOptionPane() ;
op.showMessageDialog(this ,"无此人!") ;
}
if(message.split("%")[0].equals("note")){
javax.swing.JOptionPane op = new JOptionPane() ;
op.showMessageDialog(this ,message.split("%")[1]) ;
}
if(message.split("%")[0].equals("modify_ok")||message.split("%")[0].equals("modifypass_ok")){
javax.swing.JOptionPane op = new JOptionPane() ;
op.showMessageDialog(this ,"修改成功!") ;
}
if(message.split("%")[0].equals("modify_err")||message.split("%")[0].equals("modifypass_err")){
javax.swing.JOptionPane op = new JOptionPane() ;
op.showMessageDialog(this ,"修改失败!") ;
}
if(message.split("%")[0].equals("add_ok")){
javax.swing.JOptionPane op = new JOptionPane() ;
op.showMessageDialog(this ,"添加成功!") ;
}
if(message.split("%")[0].equals("add_err")){
javax.swing.JOptionPane op = new JOptionPane() ;
op.showMessageDialog(this ,"添加失败!") ;
}
if(message.split("%")[0].equals("remove")){
c_user.removeItem(message.split("%")[1]) ;
}
if(message.split("%")[0].equals("remove_ok")){
javax.swing.JOptionPane op = new JOptionPane() ;
op.showMessageDialog(this ," 删除成功!") ;
}
if(message.split("%")[0].equals("remove_err")){
javax.swing.JOptionPane op = new JOptionPane() ;
op.showMessageDialog(this ,"已删除此人或无此人!") ;
}
if (message.split("%")[0].equals("file")) {
FileDialog fd = new FileDialog(this, "选择文件存放位置",
FileDialog.SAVE);
fd.setFile(message.split("%")[1]);
fd.setVisible(true);
String directory = fd.getDirectory();
String filename = fd.getFile();
File f = new File(directory + filename);
FileOutputStream fos = new FileOutputStream(f);
byte tmp[] = new byte[4096];
int ll = 0;
while (ll < 4096) {
ll = is.read(tmp);
fos.write(tmp, 0, ll);
System.out.println(ll) ;
}
JOptionPane.showMessageDialog(this , "文件接收成功") ;
fos.close();
f = null ;
tmp = null ;
System.gc() ;
}
if (message.split("%")[0].equals("user")) {
c_user.addItem(message.split("%")[1]);
}
if (message.split("%")[0].equals("mess")) {
cc.append(message.split("%")[1] + "\n");
}
}
} catch (Exception e) {
e.printStackTrace() ;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -