📄 serverthread2.java
字号:
package mychat;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
public class ServerThread2 extends JFrame implements Runnable{
Socket s;
PrintStream out;
BufferedReader in;
JTextArea jta1,jta2;
JButton jb1,jb2;
JLabel jl;
JPanel jp1,jp2;
JFrame jFrame;
public void run(){
try{
while(true){
getIOStream();
proccessConnection();//————死循环输出至异常————
closeConnection();
}
}catch(Exception ex){
JOptionPane.showMessageDialog(null, "异常a:"+ex.getMessage());
}
}
public ServerThread2(Socket s){
this.s=s;
jFrame =new JFrame("与 "+s.getInetAddress()+" 会 话 中");
jta1=new JTextArea(20,20);
jta1.setEditable(false);
jta1.setBackground(new Color(204,204,204));
jta2=new JTextArea(10,10);
jta2.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e){
String temp=KeyEvent.getKeyModifiersText(e.getModifiers()); // 注意获得组合(控制键如alt,ctrl,shift)键的方法;e.getKeyModifiersText(e.getKeyModifiers());
String zhj=temp.equals("")?"没有":temp;
String aj=KeyEvent.getKeyText(e.getKeyCode());/////////////e.getKeyText(e.getKeyCode())
if(zhj.equals("Ctrl")&&aj.equals("Enter")){
String ss=jta2.getText();
sendMessages(ss);
jta2.setText("");
}
}
});
jl=new JLabel(" 聊天内容输入框:");
jp1=new JPanel();
jb1=new JButton("发送");
jb2=new JButton("关闭");
jp1.setLayout(new FlowLayout());
jp1.setSize(200,10);
jp1.add(jb1);
jp1.add(jb2);
jp2=new JPanel();
jp2.setLayout(new BorderLayout());
jp2.setSize(220,220);
jp2.add(jl,BorderLayout.NORTH);
jp2.add(new JScrollPane(jta2),BorderLayout.CENTER);
jp2.add(jp1,BorderLayout.SOUTH);
System.out.println(s.getInetAddress());
JPanel contentPane=(JPanel)jFrame.getContentPane();
jFrame.setSize(550,550);
contentPane.setLayout(new BorderLayout());
contentPane.add(new JScrollPane(jta1),BorderLayout.NORTH);
contentPane.add(jp2,BorderLayout.CENTER);
jFrame.setLocation(250,20);
jFrame.setVisible(true);
jFrame.setResizable(false);
jFrame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
jb1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(e.getSource()==jb1){
String ss=jta2.getText();
sendMessages(ss);
jta2.setText("");
}
}
});
jb2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(e.getSource()==jb2){
int i=JOptionPane.showConfirmDialog(null, "确认关聊天闭窗口吗?", "关闭窗口", JOptionPane.OK_CANCEL_OPTION);
if(i==JOptionPane.OK_OPTION){
out.println("对方已经断开连接...");
jFrame.dispose();
}
else{
return;
}
}
}
});
}
public void getIOStream(){
try{
out=new PrintStream(s.getOutputStream());
in=new BufferedReader(new InputStreamReader(s.getInputStream()));
jta1.setText("");
jta1.append("监听连接..."+"\n");
jta1.append("与对方连接成功!"+"\n");
}catch(Exception ex){
JOptionPane.showMessageDialog(null, "异常b:"+ex.getMessage());
}
}
public void proccessConnection(){
out.println("与对方连接成功!");
String temp=null;
//————————利用死循环语句,捕获对方数据流——————
do{
try{
temp=in.readLine();
jta1.append(temp+"\n");
jta1.setCaretPosition(jta1.getText().length());
temp=temp.toLowerCase();
}catch(Exception ex){
jta1.append("已经断开连接!");
jta1.setCaretPosition(jta1.getText().length());
break;}
}while(true);
}
public void closeConnection(){
try{
s.close();
out.close();
in.close();
}catch(Exception ex){
JOptionPane.showMessageDialog(null, "异常c:"+ex.getMessage());
}
}
public void sendMessages(String s){
try{
out.println("He say >>>"+s);
jta1.append("You say >>> "+s+"\n");
jta1.setCaretPosition(jta1.getText().length());
}catch(Exception ex){
JOptionPane.showMessageDialog(null, "异常d:"+ex.getMessage());
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -