大二学生用JAVA编写即时通讯软件,出错,大牛帮看下

zxtheend 2014-05-23 09:10:59
这是登录窗口代码
package com.zx.Client;

import javax.swing.SwingUtilities;
import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import javax.swing.JLabel;
import java.awt.GridBagConstraints;
import java.awt.FlowLayout;
import javax.swing.JTextField;
import javax.swing.JPasswordField;
import javax.swing.JButton;

public class LoginFrame extends JFrame {

private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JPanel jPanel = null;
private JPanel jPanel1 = null;
private JPanel jPanel2 = null;
private JPanel jPanel3 = null;
private JLabel jLabel = null;
private JTextField jTextField = null;
private JPanel jPanel4 = null;
private JLabel jLabel1 = null;
private JPasswordField jPasswordField = null;
private JLabel jLabel2 = null;
private JTextField jTextField1 = null;
private JLabel jLabel3 = null;
private JTextField jTextField2 = null;
private JButton jButton = null;
private JButton jButton1 = null;
/**
* This method initializes jPanel
*
* @return javax.swing.JPanel
*/
private JPanel getJPanel() {
if (jPanel == null) {
GridLayout gridLayout = new GridLayout();
gridLayout.setRows(4);
gridLayout.setHgap(5);
gridLayout.setVgap(5);
gridLayout.setColumns(1);
jPanel = new JPanel();
jPanel.setLayout(gridLayout);
jPanel.add(getJPanel1(), null);
jPanel.add(getJPanel3(), null);
jPanel.add(getJPanel2(), null);
jPanel.add(getJPanel4(), null);
}
return jPanel;
}

/**
* This method initializes jPanel1
*
* @return javax.swing.JPanel
*/
private JPanel getJPanel1() {
if (jPanel1 == null) {
jLabel = new JLabel();
jLabel.setText("用户名:");
jPanel1 = new JPanel();
jPanel1.setLayout(new FlowLayout());
jPanel1.add(jLabel, null);
jPanel1.add(getJTextField(), null);
}
return jPanel1;
}

/**
* This method initializes jPanel2
*
* @return javax.swing.JPanel
*/
private JPanel getJPanel2() {
if (jPanel2 == null) {
jLabel3 = new JLabel();
jLabel3.setText("端口:");
jLabel2 = new JLabel();
jLabel2.setText("IP:");
jPanel2 = new JPanel();
jPanel2.setLayout(new FlowLayout());
jPanel2.add(jLabel2, null);
jPanel2.add(getJTextField1(), null);
jPanel2.add(jLabel3, null);
jPanel2.add(getJTextField2(), null);
}
return jPanel2;
}

/**
* This method initializes jPanel3
*
* @return javax.swing.JPanel
*/
private JPanel getJPanel3() {
if (jPanel3 == null) {
jLabel1 = new JLabel();
jLabel1.setText("密码:");
jPanel3 = new JPanel();
jPanel3.setLayout(new FlowLayout());
jPanel3.add(jLabel1, null);
jPanel3.add(getJPasswordField(), null);
}
return jPanel3;
}

/**
* This method initializes jTextField
*
* @return javax.swing.JTextField
*/
private JTextField getJTextField() {
if (jTextField == null) {
jTextField = new JTextField();
jTextField.setColumns(15);
}
return jTextField;
}

/**
* This method initializes jPanel4
*
* @return javax.swing.JPanel
*/
private JPanel getJPanel4() {
if (jPanel4 == null) {
jPanel4 = new JPanel();
jPanel4.setLayout(new FlowLayout());
jPanel4.add(getJButton(), null);
jPanel4.add(getJButton1(), null);
}
return jPanel4;
}

/**
* This method initializes jPasswordField
*
* @return javax.swing.JPasswordField
*/
private JPasswordField getJPasswordField() {
if (jPasswordField == null) {
jPasswordField = new JPasswordField();
jPasswordField.setColumns(15);
}
return jPasswordField;
}

/**
* This method initializes jTextField1
*
* @return javax.swing.JTextField
*/
private JTextField getJTextField1() {
if (jTextField1 == null) {
jTextField1 = new JTextField();
jTextField1.setColumns(10);
jTextField1.setText("192.168.1.250");
}
return jTextField1;
}

/**
* This method initializes jTextField2
*
* @return javax.swing.JTextField
*/
private JTextField getJTextField2() {
if (jTextField2 == null) {
jTextField2 = new JTextField();
jTextField2.setColumns(5);
jTextField2.setText("8090");
}
return jTextField2;
}

/**
* This method initializes jButton
*
* @return javax.swing.JButton
*/
private JButton getJButton() {
if (jButton == null) {
jButton = new JButton();
jButton.setText("登录");
jButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
String username = jTextField.getText().trim();
String password = new String(jPasswordField.getPassword());
String ip = jTextField1.getText().trim();
int port = Integer.parseInt(jTextField2.getText().trim());
UserServer us = new UserServer(LoginFrame.this);
us.login(username, password, ip, port);
LoginFrame.this.dispose();
}
});
}
return jButton;
}

/**
* This method initializes jButton1
*
* @return javax.swing.JButton
*/
private JButton getJButton1() {
if (jButton1 == null) {
jButton1 = new JButton();
jButton1.setText("退出");
}
return jButton1;
}

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
SwingUtilities.invokeLater(new Runnable() {
public void run() {
LoginFrame thisClass = new LoginFrame();
thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
thisClass.setVisible(true);
}
});
}

/**
* This is the default constructor
*/
public LoginFrame() {
super();
initialize();
}

/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(300, 200);
this.setResizable(false);
this.setContentPane(getJContentPane());
this.setTitle("QQ登录界面");
this.addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent e) {
System.out.println("windowClosing()"); // TODO Auto-generated Event stub windowClosing()
}
});
}

/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(new BorderLayout());
jContentPane.add(getJPanel(), BorderLayout.CENTER);
}
return jContentPane;
}

}

其他代码在楼下
...全文
570 18 打赏 收藏 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
机器学习之禅 2014-05-28
  • 打赏
  • 举报
回复
代码没注释,没日志输出,没有单元测试,不说错在哪 ,这帖子可以删了
朗晴 2014-05-27
  • 打赏
  • 举报
回复
楼主是老师么
IT_NK 2014-05-27
  • 打赏
  • 举报
回复
哎嘛!学习哈大学生的代码!
绝对在乎妮 2014-05-27
  • 打赏
  • 举报
回复
这是在窗口拖来拖去生的东西
猿猿猿媛 2014-05-26
  • 打赏
  • 举报
回复
上帝的无名指 2014-05-26
  • 打赏
  • 举报
回复
大二,你能写出来? 不然早就把问题说清楚了, 敢说不是copy的
可乐罐 2014-05-26
  • 打赏
  • 举报
回复
没错误信息,一堆纯净的代码。。。。。
ilovefzq 2014-05-26
  • 打赏
  • 举报
回复
贴的代码也不全,让人力不从心啊
ThisTimed 2014-05-25
  • 打赏
  • 举报
回复
又不贴错误,标题还大二学生,楼主是来秀优越感的吧
LinY_X 2014-05-24
  • 打赏
  • 举报
回复
贴报错代码
浊丶ge 2014-05-23
  • 打赏
  • 举报
回复
大哥直接说问题啊。。。。这怎么看????
dyf20081124 2014-05-23
  • 打赏
  • 举报
回复
报什么样的错给贴一下。。
Magical茏 2014-05-23
  • 打赏
  • 举报
回复
这么长的代码 没有耐心看
zxtheend 2014-05-23
  • 打赏
  • 举报
回复
这是服务器界面代码
package com.zx.Server;

import javax.swing.SwingUtilities;
import java.awt.BorderLayout;

import javax.swing.DefaultListModel;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.GridBagLayout;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;
import java.awt.GridBagConstraints;
import javax.swing.JLabel;
import java.awt.FlowLayout;
import javax.swing.JTextField;
import java.awt.Dimension;
import java.io.IOException;

import javax.swing.JButton;
import javax.xml.ws.Service;

public class ServerFrame extends JFrame {

	private static final long serialVersionUID = 1L;
	private JPanel jContentPane = null;
	private JTextArea jTextArea = null;
	private JPanel jPanel1 = null;
	private JPanel jPanel2 = null;
	private JLabel jLabel = null;
	private JScrollPane jScrollPane = null;
	private JLabel jLabel1 = null;
	private JTextField jTextField = null;
	private JButton jButton = null;
	private JLabel jLabel2 = null;
	private Server ss;
	private DefaultListModel listModel = null;
	/**
	 * This method initializes jTextArea	
	 * 	
	 * @return javax.swing.JTextArea	
	 */
	private JTextArea getJTextArea() {
		if (jTextArea == null) {
			jTextArea = new JTextArea();
		}
		return jTextArea;
	}

	/**
	 * This method initializes jPanel1	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getJPanel1() {
		if (jPanel1 == null) {
			jLabel = new JLabel();
			jLabel.setText("--在线用户列表--");
			jPanel1 = new JPanel();
			jPanel1.setLayout(new BorderLayout());
			jPanel1.add(jLabel, BorderLayout.NORTH);
			jPanel1.add(getJScrollPane(), BorderLayout.CENTER);
		}
		return jPanel1;
	}

	/**
	 * This method initializes jPanel2	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getJPanel2() {
		if (jPanel2 == null) {
			jLabel1 = new JLabel();
			jLabel1.setText("请输入:");
			jPanel2 = new JPanel();
			jPanel2.setLayout(new FlowLayout());
			jPanel2.add(jLabel1, null);
			jPanel2.add(getJTextField(), null);
			jPanel2.add(getJButton(), null);
		}
		return jPanel2;
	}

	/**
	 * This method initializes jScrollPane	
	 * 	
	 * @return javax.swing.JScrollPane	
	 */
	private JScrollPane getJScrollPane() {
		if (jScrollPane == null) {
			jScrollPane = new JScrollPane();
		}
		return jScrollPane;
	}

	/**
	 * This method initializes jTextField	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getJTextField() {
		if (jTextField == null) {
			jTextField = new JTextField();
			jTextField.setColumns(25);
		}
		return jTextField;
	}

	/**
	 * This method initializes jButton	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButton() {
		if (jButton == null) {
			jButton = new JButton();
			jButton.setText("发送");
		}
		return jButton;
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				ServerFrame thisClass = new ServerFrame();
				thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				thisClass.setVisible(true);
			}
		});
	}

	/**
	 * This is the default constructor
	 */
	public ServerFrame() {
		super();
		initialize();
		stratServer();
	}

	private void stratServer() {
		jTextArea.setText("服务器已启动,正在监听8090端口...");
		// TODO Auto-generated method stub
		new Thread(new Runnable() {
			
			@Override
			public void run() {
				// TODO Auto-generated method stub
				ss = new Server(jTextArea,listModel);
				try {
					ss.startServer();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}).start();
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		this.setSize(443, 379);
		this.setContentPane(getJContentPane());
		this.setTitle("QQ服务器窗口");
		this.addWindowListener(new java.awt.event.WindowAdapter() {
			public void windowClosing(java.awt.event.WindowEvent e) {
				System.out.println("windowClosing()"); // TODO Auto-generated Event stub windowClosing()
			}
		});
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			jLabel2 = new JLabel();
			jLabel2.setText("JLabel");
			jContentPane = new JPanel();
			jContentPane.setLayout(new BorderLayout());
			jContentPane.add(getJTextArea(), BorderLayout.CENTER);
			jContentPane.add(getJPanel1(), BorderLayout.EAST);
			jContentPane.add(getJPanel2(), BorderLayout.SOUTH);
			jContentPane.add(jLabel2, BorderLayout.NORTH);
		}
		return jContentPane;
	}

}  //  @jve:decl-index=0:visual-constraint="10,10"
zxtheend 2014-05-23
  • 打赏
  • 举报
回复
这是客户端线程代码
package com.zx.Client;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.Xpp3Driver;
import com.zx.model.Info;
import com.zx.util.InfoType;

public class UserServer {
	private Socket socket;
	private DataInputStream in;
	private DataOutputStream out;
	private ChatFrame chatFrame;
	private LoginFrame loginFrame;
	public UserServer(LoginFrame loginFrame){
		this.loginFrame = loginFrame;
	}
	public void login(final String username,final String password,final String ip,final int port){
		Thread t = new Thread(new Runnable() {
			
			@Override
			public void run() {
				// TODO Auto-generated method stub
				try {
					socket = new Socket(ip,port);
					out = new DataOutputStream(socket.getOutputStream());
					Info info = new Info();
					info.setFromUser(username);
					info.setInfoType(InfoType.ONLINE);
					XStream xStream = new XStream(new Xpp3Driver());
					String xml = xStream.toXML(info);
					System.out.println(xml);
					out.writeUTF(xml);
					out.flush();
					Thread t1 = new Thread(new UserThread());
					t1.setDaemon(true);
					t1.start();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		});
		t.start();
	}
	public class UserThread implements Runnable {
		private boolean flag = true;
		Info info = null;
		public void setFlag(boolean flag) {
			this.flag = flag;
		}
		public UserThread() {
			super();
			this.flag = true;
		}
		@Override
		public void run() {
			// TODO Auto-generated method stub
			while(flag){
				try {
					in = new DataInputStream(socket.getInputStream());
					String info_XML = in.readUTF();
					XStream xStream = new XStream(new Xpp3Driver());
					info = (Info)xStream.fromXML(info_XML);
					switch (info.getInfoType()) {
					case WELCOME:
						chatFrame = new ChatFrame(info,UserServer.this);
						loginFrame.dispose();
						break;

					default:
						break;
					}
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}

	}
}
zxtheend 2014-05-23
  • 打赏
  • 举报
回复
这是聊天界面代码
package com.zx.Client;

import javax.swing.SwingUtilities;
import java.awt.BorderLayout;
import java.awt.HeadlessException;

import javax.swing.DefaultListModel;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.GridBagLayout;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;
import java.awt.GridBagConstraints;
import javax.swing.JLabel;
import java.awt.FlowLayout;
import javax.swing.JTextField;
import java.awt.Dimension;
import javax.swing.JButton;

import com.zx.model.Info;

public class ChatFrame extends JFrame {

	private static final long serialVersionUID = 1L;
	private JPanel jContentPane = null;
	private JTextArea jTextArea = null;
	private JPanel jPanel1 = null;
	private JPanel jPanel2 = null;
	private JLabel jLabel = null;
	private JScrollPane jScrollPane = null;
	private JLabel jLabel1 = null;
	private JTextField jTextField = null;
	private JButton jButton = null;
	private JLabel jLabel2 = null;
	private Info info;
	private DefaultListModel listModel;
	private UserServer us;
	/**
	 * This method initializes jTextArea	
	 * 	
	 * @return javax.swing.JTextArea	
	 */
	
	private JTextArea getJTextArea() {
		if (jTextArea == null) {
			jTextArea = new JTextArea();
		}
		return jTextArea;
	}

	public ChatFrame(Info info, UserServer us) throws HeadlessException {
		super();
		this.info = info;
		this.us = us;
		jLabel2.setText("当前用户: "+info.getToUser());
		setData(info);
	}

	private void setData(Info info) {
		// TODO Auto-generated method stub
		StringBuffer buf = new StringBuffer();
		buf.append(jTextArea.getText()).append(" \n").append(info.getFromUser()).append("  ").append(info.getTime()).append("\n")
		.append(info.getContent()).append("\n\n");
		jTextArea.setText(buf.toString());
	}

	/**
	 * This method initializes jPanel1	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getJPanel1() {
		if (jPanel1 == null) {
			jLabel = new JLabel();
			jLabel.setText("--在线用户列表--");
			jPanel1 = new JPanel();
			jPanel1.setLayout(new BorderLayout());
			jPanel1.add(jLabel, BorderLayout.NORTH);
			jPanel1.add(getJScrollPane(), BorderLayout.CENTER);
		}
		return jPanel1;
	}

	/**
	 * This method initializes jPanel2	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getJPanel2() {
		if (jPanel2 == null) {
			jLabel1 = new JLabel();
			jLabel1.setText("请输入:");
			jPanel2 = new JPanel();
			jPanel2.setLayout(new FlowLayout());
			jPanel2.add(jLabel1, null);
			jPanel2.add(getJTextField(), null);
			jPanel2.add(getJButton(), null);
		}
		return jPanel2;
	}

	/**
	 * This method initializes jScrollPane	
	 * 	
	 * @return javax.swing.JScrollPane	
	 */
	private JScrollPane getJScrollPane() {
		if (jScrollPane == null) {
			jScrollPane = new JScrollPane();
		}
		return jScrollPane;
	}

	/**
	 * This method initializes jTextField	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getJTextField() {
		if (jTextField == null) {
			jTextField = new JTextField();
			jTextField.setColumns(25);
		}
		return jTextField;
	}

	/**
	 * This method initializes jButton	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButton() {
		if (jButton == null) {
			jButton = new JButton();
			jButton.setText("发送");
		}
		return jButton;
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				ChatFrame thisClass = new ChatFrame();
				thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				thisClass.setVisible(true);
			}
		});
	}

	/**
	 * This is the default constructor
	 */
	public ChatFrame() {
		super();
		initialize();
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		this.setSize(443, 379);
		this.setContentPane(getJContentPane());
		this.setTitle("QQ聊天窗口");
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			jLabel2 = new JLabel();
			jLabel2.setText("JLabel");
			jContentPane = new JPanel();
			jContentPane.setLayout(new BorderLayout());
			jContentPane.add(getJTextArea(), BorderLayout.CENTER);
			jContentPane.add(getJPanel1(), BorderLayout.EAST);
			jContentPane.add(getJPanel2(), BorderLayout.SOUTH);
			jContentPane.add(jLabel2, BorderLayout.NORTH);
		}
		return jContentPane;
	}

}  //  @jve:decl-index=0:visual-constraint="10,10"

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧