📄 chatjdialog.java
字号:
/*
* ChatJDialog.java
*
* Created on 2009年4月26日, 下午7:37
*/
package chat;
import java.net.*;
import java.io.*;
import javax.swing.*;
/**
*
* @author King
*/
public class ChatJDialog extends javax.swing.JDialog{
/** Creates new form ChatJDialog */
private String IP;
private int SendPortnum;
private int RevPortnum;
private DatagramSocket Client ;
private DatagramSocket Server;
private DatagramPacket packet;
private dealMsg msg;
private Thread chatrun;
private int running;
private int initSocket() {
IP = ipAddress.getText();
String sPort = sendPort.getText();
String rPort = recievPort.getText();
SendPortnum = Integer.valueOf(sPort);
RevPortnum = Integer.valueOf(rPort);
byte[] rbuf = new byte[256];
packet = new DatagramPacket(rbuf,rbuf.length);
try {
Client = new DatagramSocket();
Server = new DatagramSocket(RevPortnum);
}
catch(Exception e){
return 0;
}
return 1;
}
public ChatJDialog(java.awt.Frame parent, boolean modal) {
super(parent, modal);
initComponents();
running = 0;
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
ipAddress = new javax.swing.JTextField();
jLabel2 = new javax.swing.JLabel();
recievPort = new javax.swing.JTextField();
startChat = new javax.swing.JButton();
jLabel3 = new javax.swing.JLabel();
sendPort = new javax.swing.JTextField();
jScrollPane1 = new javax.swing.JScrollPane();
recieveForm = new javax.swing.JTextPane();
jScrollPane2 = new javax.swing.JScrollPane();
sendForm = new javax.swing.JTextPane();
sendMsg = new javax.swing.JButton();
clearInfo = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("Datagram Socket 聊天范例");
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
formWindowClosing(evt);
}
});
jLabel1.setText("IP:");
jLabel2.setText("接收端口:");
startChat.setText("启动");
startChat.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
startChatActionPerformed(evt);
}
});
jLabel3.setText("发送端口:");
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(ipAddress, javax.swing.GroupLayout.PREFERRED_SIZE, 85, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(16, 16, 16)
.addComponent(jLabel2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(recievPort, javax.swing.GroupLayout.PREFERRED_SIZE, 41, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(13, 13, 13)
.addComponent(jLabel3)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(sendPort, javax.swing.GroupLayout.PREFERRED_SIZE, 44, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 29, Short.MAX_VALUE)
.addComponent(startChat)
.addGap(26, 26, 26))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(startChat)
.addComponent(ipAddress, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel2)
.addComponent(recievPort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel3, javax.swing.GroupLayout.DEFAULT_SIZE, 17, Short.MAX_VALUE)
.addComponent(sendPort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap())
);
jScrollPane1.setViewportView(recieveForm);
jScrollPane2.setViewportView(sendForm);
sendMsg.setText("发送");
sendMsg.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
sendMsgActionPerformed(evt);
}
});
clearInfo.setText("清空");
clearInfo.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
clearInfoActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 471, Short.MAX_VALUE)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap()
.addComponent(clearInfo)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 337, Short.MAX_VALUE)
.addComponent(sendMsg)
.addContainerGap())
.addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 471, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 206, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 124, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 12, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(sendMsg)
.addComponent(clearInfo)))
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void clearInfoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_clearInfoActionPerformed
// TODO 将在此处添加您的处理代码:
recieveForm.setText("");
}//GEN-LAST:event_clearInfoActionPerformed
private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing
// TODO 将在此处添加您的处理代码:
msg.SetStopTag();
Client.close();
Server.close();
running = 0;
}//GEN-LAST:event_formWindowClosing
private void sendMsgActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_sendMsgActionPerformed
// TODO 将在此处添加您的处理代码:
String SInfo = sendForm.getText();
byte[] sbuf = SInfo.getBytes();
try {
if(SInfo !="")
Client.send(new DatagramPacket(sbuf,sbuf.length,InetAddress.getByName(IP),SendPortnum));
}
catch(Exception e) {
JOptionPane.showMessageDialog(this,"发送失败!!","错误",1);
}
sendForm.setText("");
}//GEN-LAST:event_sendMsgActionPerformed
private void startChatActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_startChatActionPerformed
// TODO 将在此处添加您的处理代码:
if(running == 0) {
if(initSocket() > 0) {
startChat.setEnabled(false);
ipAddress.setEnabled(false);
sendPort.setEnabled(false);
recievPort.setEnabled(false);
msg = new dealMsg(recieveForm,Server,packet);
chatrun = new Thread(msg);
chatrun.start();
running = 1;
}
}
else JOptionPane.showMessageDialog(this,"程序已经运行!","错误",1);
}//GEN-LAST:event_startChatActionPerformed
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new ChatJDialog(new javax.swing.JFrame(), true).setVisible(true);
}
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton clearInfo;
private javax.swing.JTextField ipAddress;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JPanel jPanel1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JTextField recievPort;
private javax.swing.JTextPane recieveForm;
private javax.swing.JTextPane sendForm;
private javax.swing.JButton sendMsg;
private javax.swing.JTextField sendPort;
private javax.swing.JButton startChat;
// End of variables declaration//GEN-END:variables
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -