?? chatclient.java
字號(hào):
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.net.Socket;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.ScrollPaneConstants;
public class ChatClient extends JFrame {
boolean beConnected = false;
Socket s = null;
DataOutputStream dos = null;
DataInputStream dis = null;
JTextField serIPText = new JTextField(10);
JTextField nameText = new JTextField(5);
JTextArea jtArea = new JTextArea();
JTextField jtField = new JTextField(40);
JButton conJB = new JButton("連接");
DefaultComboBoxModel dcbm=null;
public static void main(String[] args) {
new ChatClient().newClient();
}
public void newClient() {
this.setTitle("簡(jiǎn)易聊天客戶端1.0");
JPanel jp = new JPanel();
jp.add(serIPText);
jp.add(nameText);
conJB.addActionListener(new JBListener());
jp.add(conJB);
this.jtField.addActionListener(new TFListener());
this.jtArea.setEditable(false);
JScrollPane jsp = new JScrollPane(jtArea);
jsp
.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
this.add(jp, BorderLayout.NORTH);
this.add(jsp);
JPanel jpSouth=new JPanel();
jpSouth.add(jtField);
dcbm=new DefaultComboBoxModel();
//dcbm.addElement("All");
JComboBox jb=new JComboBox(dcbm);
jpSouth.add(jb);
this.add(jpSouth, BorderLayout.SOUTH);
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
this.setBounds(300, 100, 600, 480);
this.setResizable(false);
this.setVisible(true);
}
public void connect(String ip) {
if (nameText.getText().trim().equals("")) {
jtArea.append("請(qǐng)?zhí)钊胗脩裘?quot; + "\n");
} else {
try {
s = new Socket(ip, 8788);
dos = new DataOutputStream(s.getOutputStream());
dos.writeUTF(nameText.getText().trim());
beConnected = true;
conJB.setEnabled(false);
// dos.close();
jtArea.append("連接成功" + s.getInetAddress() + ":" + s.getPort()
+ new Date()+"\n");
dis = new DataInputStream(s.getInputStream());
new Thread(new ReceiveMes()).start();
} catch (IOException e) {
jtArea.append("連接錯(cuò)誤...請(qǐng)退出" + "\n");
disConnect();
}
}
}
public void disConnect() {
try {
if (dos != null)
dos.close();
if (dis != null)
dis.close();
if (s != null)
s.close();
s = null;
beConnected = false;
conJB.setEnabled(true);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void sendMes(String s) {
try {
if (beConnected) {
dos.writeUTF(s);
}
} catch (IOException e1) {
try {
dos.close();
beConnected = false;
} catch (IOException e2) {
e2.printStackTrace();
}
e1.printStackTrace();
}
}
class TFListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
String temp = jtField.getText();
sendMes(temp);
jtField.setText("");
}
}
class JBListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
connect(serIPText.getText().trim());
}
}
class ReceiveMes implements Runnable {
@Override
public void run() {
while (beConnected) {
try {
String temp = dis.readUTF();
jtArea.append(temp + "\n");
} catch (IOException e) {
disConnect();
}
}
}
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -