📄 clientthread.java
字号:
package chatAndNet;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.net.*;
import javax.swing.border.*;
import cchess.MainFrame;
import javax.swing.*;
public class ClientThread extends Thread{
private Socket connectToServer ;
private DataInputStream inFromServer;
private DataOutputStream outToServer;
private int index = 0;
private int flag = 0;
private String textInput = null;
private JTextArea chatArea1 = new JTextArea();
private JTextArea chatArea2 = new JTextArea();
private String localip = null ;
private String iptemp = null;
private String s = null;
public ClientThread(InetAddress addr, int por,
String clientName) throws IOException{
super(clientName); //调用线程式你类的构造方法,给线程式命名...
iptemp = InetAddress.getLocalHost().toString();
for(int i=0;i<iptemp.length();i++){
if(iptemp.charAt(i)=='/'){
localip = iptemp.substring(i+1);
}
}
connectToServer = new Socket(addr,por);
inFromServer = new DataInputStream(connectToServer.getInputStream());
outToServer = new DataOutputStream(connectToServer.getOutputStream());
outToServer.writeUTF(localip);
outToServer.flush();
s = inFromServer.readUTF() ;
System.out.println(s);
start();
}
public void run(){
try{
MainFrame.tablePane.add(s,new ChatPane());
while(true){
String s1 = inFromServer.readUTF();
if(!s1.equals("null"+"\n")){
chatArea1.append(s1);
}else chatArea1.setText(null);
if(flag==1) break;
}
inFromServer.close();
outToServer.close();
connectToServer.close();
}catch(IOException e){
e.getStackTrace();
}
}
class ChatPane extends JPanel{
JButton okButton = new JButton("发送");
JButton cancelButton = new JButton("关闭");
JScrollPane scrollPane ;
JPanel subPanel = new JPanel();
ChatPane(){
super();
this.setLayout(null);
addText1();
addText2();
addOkButton();
addCancelButton();
}
private void addText1(){
scrollPane = new JScrollPane();
scrollPane.getViewport().setView(chatArea1);
scrollPane.setViewportBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
scrollPane.setBounds(5,5,360,380);
//chatArea1.setCaretPosition( chatArea1.getDocument().getLength());
//chatArea1.setCaretPosition(0);
chatArea1.setEditable(false);
this.add(scrollPane);
}
private void addText2(){
this.add(chatArea2);
chatArea2.setBounds(5,400,360,120);
chatArea2.setBorder(BorderFactory.createLoweredBevelBorder());
}
private void addOkButton(){
this.add(okButton);
okButton.setBounds(200,530,60,25);
okButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent okb){
textInput = chatArea2.getText();
chatArea2.setText(null);
String s = localip+" said to you \n"+textInput+"\n";
chatArea1.append(localip+"\n"+textInput+"\n");
try{outToServer.writeUTF(s);
outToServer.flush();
}catch(IOException send){
send.printStackTrace();
}
}
});
}
private void addCancelButton(){
this.add(cancelButton);
cancelButton.setBounds(280,530,60,25);
cancelButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ceb){
MainFrame.tablePane.remove(index) ;
flag = 1;
}
});
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -