📄 clientgui.java
字号:
.addGroup(
jPanelLayout
.createSequentialGroup()
.addContainerGap(
javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addGroup(
jPanelLayout
.createParallelGroup(
javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(
serverLabel)
.addComponent(
serverTextField,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(
infoLabel,
javax.swing.GroupLayout.PREFERRED_SIZE,
22,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(
javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(
jPanelLayout
.createParallelGroup(
javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(idLabel)
.addComponent(
idTextField,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(nameLabel)
.addComponent(
nameTextField,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(
submitButton)
.addComponent(
exitButton))
.addPreferredGap(
javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(
jScrollPane1,
javax.swing.GroupLayout.PREFERRED_SIZE,
261,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(
jPanelLayout
.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(
jPanelLayout
.createSequentialGroup()
.addGap(
26,
26,
26)
.addComponent(
sendMsgButton,
javax.swing.GroupLayout.PREFERRED_SIZE,
69,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(
jPanelLayout
.createSequentialGroup()
.addPreferredGap(
javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(
jScrollPane2,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGap(15, 15, 15)
.addGroup(
jPanelLayout
.createParallelGroup(
javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel0)
.addComponent(
sendFileButton)
.addComponent(
fileTextField,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel1)
.addComponent(
receiverComboBox,
javax.swing.GroupLayout.PREFERRED_SIZE,
18,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap()));
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING).addComponent(jPanel,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE));
layout.setVerticalGroup(layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING).addComponent(jPanel,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE));
pack();
}// </editor-fold>
//GEN-END:initComponents
private void receiverComboBoxActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void serverTextFieldActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void sendMsgButtonActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String sendersay = userid + " 说: (" + sdf.format(date) + ")";
//chartTextArea.append(sendersay + "\n" + msgTextArea.getText() + "\n\n");
try {
out.writeUTF("message:" + sendersay + "\n" + msgTextArea.getText()
+ "\n" + "userid:" + userid);
} catch (IOException e) {
// TODO Auto-generated catch block
chartTextArea.append("——消息发送失败");
}
msgTextArea.setText("");
}
private void sendFileButtonActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
if (file == null || !file.exists()) {
file = null;
return;
}
String receiver=(String)receiverComboBox.getSelectedItem();
if(userid.equals(receiver))
{
JOptionPane.showMessageDialog(jPanel,"不能给自己发送文件!");
return;
}
DataInputStream dis = null;
try {
dis = new DataInputStream(new BufferedInputStream(
new FileInputStream(file)));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
out.writeUTF("file:" + file.getName() + ";sender:" + userid
+ ";receiver:"+receiver);
out.flush();
byte[] buf = new byte[1024*1024];
int len = 0;
if (dis != null)
len = dis.read(buf);
out.write(buf, 0, len);
out.flush();
JOptionPane.showMessageDialog(jPanel, "文件传送成功!");
} catch (IOException e) {
// TODO Auto-generated catch block
JOptionPane.showMessageDialog(jPanel, "文件传送失败!");
return;
}
}
private void fileTextFieldMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
JFileChooser chooser = new JFileChooser();
chooser.setMultiSelectionEnabled(false);
if (chooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
sourcefilepath = chooser.getSelectedFile().getAbsolutePath();
fileTextField.setText(sourcefilepath);
}
if (sourcefilepath != null) {
file = new File(sourcefilepath);
sourcefilepath = null;
}
}
private void fileTextFieldActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void exitButtonActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
socket = null;
in = null;
out = null;
System.exit(0);
}
private void submitButtonActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try {
socket = new Socket(serverTextField.getText().replace(" ", ""),
9090);
in = new DataInputStream(socket.getInputStream());
out = new DataOutputStream(socket.getOutputStream());
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
infoLabel.setText("无法识别的主机地址!");
} catch (IOException e) {
// TODO Auto-generated catch block
infoLabel.setText("连接失败!");
}
if (socket != null) {
InetAddress address = socket.getInetAddress();
infoLabel.setText("连接 " + address + " 成功!");
try {
userid = idTextField.getText();
username = nameTextField.getText();
out.writeUTF("userid:" + userid + ";username:" + username
+ ";ip:" + address);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (thread == null) {
thread = new Thread(this);
thread.start();
}
}
private void nameTextFieldActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
@Override
public void run() {
// TODO Auto-generated method stub
while (true) {
String msg;
try {
msg = in.readUTF();
if (msg.startsWith("userid:")) {
String userid = msg.substring(msg.indexOf("userid:")
+ "userid:".length(), msg.indexOf(";username:"));
String username = msg.substring(msg.indexOf("username:")
+ "username:".length(), msg.indexOf(";ip:"));
String ip = msg.substring(msg.lastIndexOf("ip:")
+ "ip:".length());
ulist.add(new User(userid, username, "", "ip", ""));
uarray = new String[ulist.size()];
for (int i = 0; i < ulist.size(); i++) {
uarray[i] = ((User) ulist.get(i)).getUserid();
}
receiverComboBox
.setModel(new javax.swing.DefaultComboBoxModel(
uarray));
} else if (msg.startsWith("message:"))
chartTextArea.append(msg.substring(msg.indexOf(":") + 1)
+ "\n");
else if(msg.startsWith("file:"))
{
String filename=msg.substring(msg.indexOf("file:")+"file:".length(),msg.indexOf(";sender:"));
String sender=msg.substring(msg.indexOf(";sender:")+";sender:".length());
JOptionPane.showMessageDialog(jPanel,"用户"+sender+"正在向您发送文件"+filename+"。");
DataOutputStream dos=new DataOutputStream(new BufferedOutputStream(new BufferedOutputStream(new FileOutputStream("D:\\"+filename))));
byte[] buf=new byte[1024*1024];
int len=0;
if(in!=null)
len=in.read(buf);
System.out.println(len);
dos.write(buf,0,len);
dos.flush();
dos.close();
JOptionPane.showMessageDialog(jPanel,"文件接收成功!");
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new ClientGUI().setVisible(true);
}
});
}
//GEN-BEGIN:variables
// Variables declaration - do not modify
private javax.swing.JTextArea chartTextArea;
private javax.swing.JButton exitButton;
private javax.swing.JTextField fileTextField;
private javax.swing.JLabel idLabel;
private javax.swing.JTextField idTextField;
private javax.swing.JLabel infoLabel;
private javax.swing.JLabel jLabel0;
private javax.swing.JLabel jLabel1;
private javax.swing.JPanel jPanel;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JTextArea msgTextArea;
private javax.swing.JLabel nameLabel;
private javax.swing.JTextField nameTextField;
private javax.swing.JComboBox receiverComboBox;
private javax.swing.JButton sendFileButton;
private javax.swing.JButton sendMsgButton;
private javax.swing.JLabel serverLabel;
private javax.swing.JTextField serverTextField;
private javax.swing.JButton submitButton;
// End of variables declaration//GEN-END:variables
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -