?? chatclient.java
字號(hào):
import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.net.*;
import java.io.*;
class ChatClient
{
private JDialog dialog;
private JTextArea echo,send;
private Socket socket;
private BufferedReader in;
private PrintWriter out;
private receive r;
private String Cname;
private String Mname;
class receive extends Thread
{
receive()throws IOException
{
start();
}
public void run()
{
String msg=null;
String nextmsg=null;
try
{
nextmsg=in.readLine();
}catch(IOException ioe){}
while(nextmsg!=null)
{
try
{
if(nextmsg.equals("CHATOVER"))
{
break;
}
if(echo.getLineCount()>30)
{
msg=echo.getText();
msg=msg.substring(msg.indexOf("\n")+1);
echo.setText(msg+'\n'+Mname+":"+nextmsg);
}
else
{
if(!echo.getText().equals(""))
{
echo.append('\n'+Mname+":"+nextmsg);
//echo.setText(echo.getText()+'\n'+Mname+":"+nextmsg);
}
else
{
echo.setText(Mname+":"+nextmsg);
}
}
nextmsg=in.readLine();
}catch(IOException e){System.out.println(e);break;}
}
System.out.println("CHAT END");
try
{
in.close();
}catch(Exception e){}
}
}
ChatClient(String name,String IP,JDialog fd)throws Exception
{
socket = new Socket(IP, 8001);
Thread.sleep(100);
in =
new BufferedReader(
new InputStreamReader(
socket.getInputStream()));
out =
new PrintWriter(
new BufferedWriter(
new OutputStreamWriter(
socket.getOutputStream())), true);
Cname = name;
Mname = in.readLine();
dialog = new JDialog(fd,"Chat",true);
JPanel textPanel = new JPanel();
textPanel.setLayout(new GridBagLayout());
textPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.BLACK,2),
"聊天信息",TitledBorder.CENTER,TitledBorder.TOP));
GridBagConstraints gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.WEST;
gbc.insets = new Insets(2,2,2,2);
echo = new JTextArea(10,30);
JPanel t1 = new JPanel();
t1.setBorder(BorderFactory.createEmptyBorder(0,0,0,0));
t1.setLayout(new GridLayout(0,1));
t1.add(echo);
send = new JTextArea(3,30);
send.addKeyListener(new KeyListener(){
public void keyPressed(KeyEvent e)
{
int keyCode = e.getKeyCode();
if(keyCode==KeyEvent.VK_ENTER && e.isControlDown())
{
out.println(send.getText());
try
{
if(echo.getLineCount()>30)
{
String msg=echo.getText();
msg=msg.substring(msg.indexOf('\n')+1);
echo.setText(msg+'\n'+Cname+":"+send.getText());
}
else
{
if(echo.getText().equals(""))
{
echo.setText(Cname+":"+send.getText());
}
else
{
echo.append('\n'+Cname+":"+send.getText());
//echo.setText(echo.getText()+'\n'+Cname+":"+send.getText());
}
}
}catch(Exception ex){}
send.setText("");
}
}
public void keyTyped(KeyEvent e)
{
}
public void keyReleased(KeyEvent e)
{
};
});
JPanel t2 = new JPanel();
t2.setBorder(BorderFactory.createEmptyBorder(0,0,0,0));
t2.setLayout(new GridLayout(0,1));
t2.add(send);
gbc.gridy=1;
gbc.gridx=0;
textPanel.add(new JLabel("Receive:"),gbc);
gbc.gridy=2;
textPanel.add(new JScrollPane(t1),gbc);
gbc.gridy=3;
gbc.gridx=0;
textPanel.add(new JLabel("Send:"),gbc);
gbc.gridy=4;
textPanel.add(new JScrollPane(t2),gbc);
JPanel p = new JPanel();
JButton b = new JButton("發(fā)送");
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
System.out.println(send.getText());
out.println(send.getText());
try
{
if(echo.getLineCount()>30)
{
String msg=echo.getText();
msg=msg.substring(msg.indexOf('\n')+1);
echo.setText(msg+'\n'+Cname+":"+send.getText());
}
else
{
if(echo.getText().equals(""))
{
echo.setText(Cname+":"+send.getText());
}
else
{
echo.append('\n'+Cname+":"+send.getText());
//echo.setText(echo.getText()+'\n'+Cname+":"+send.getText());
}
}
}catch(Exception ex){}
send.setText("");
}
});
p.add(b);
b = new JButton("退出");
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
try
{
out.println("CHATOVER");
dialog.dispose();
out.close();
socket.close();
}catch(Exception ex){}
}
});
p.add(b);
try
{
r = new receive();
dialog.add(textPanel,BorderLayout.NORTH);
dialog.add(p,BorderLayout.SOUTH);
dialog.setBounds(365,310,360,400);
dialog.setResizable(false);
dialog.setVisible(true);
dialog.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e)
{
try
{
out.println("CHATOVER");
dialog.dispose();
out.close();
socket.close();
}catch(Exception ex){}
}
});
}catch(IOException ex){}
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -