62,621
社区成员
发帖
与我相关
我的任务
分享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;
}
}
这是在窗口拖来拖去生的东西
大二,你能写出来? 不然早就把问题说清楚了, 敢说不是copy的


这么长的代码 没有耐心看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"
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();
}
}
}
}
}
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"