⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chatclientpanel.java

📁 这是一个功能不错的多人聊天室.可以多人联机
💻 JAVA
字号:
package net.yangzhe.chatSocket;
import java.awt.event.KeyEvent;
import java.io.IOException;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JButton;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;

public class ChatClientPanel extends JPanel {

	private JTextPane jTextArea = null;
	private JButton jButton = null;
	private JTextPane jTextArea1 = null;
	private JScrollPane jScrollPane = null;
	private JScrollPane jScrollPane1 = null;
	private Client client;
	private String show="";
	private JButton jButton1 = null;
	private String nickname;

	public ChatClientPanel(String ip,String un) throws UnknownHostException, IOException {
		super();
		nickname=un;
		initialize();
		
		client =new Client(InetAddress.getByName(ip));
		client.sendNews("%0%0");//jump out of cycle 1 at server
		client.sendNews(this.nickname);
		Thread t=new Thread(new Runnable(){
			public void run() {
				
				while(true){
					//System.out.println("abcd");
					try {
						
						show=client.getNews().replace("%8%8","\r\n");
						String test=show.replace("\r\n","\n");
						client.sendNews("%7%7");
						//System.out.println("aaaaa"+show);
						jTextArea1.setText(show);
						jTextArea1.setCaretPosition(test.length()-1);
						
					} catch (Exception ex) {
						// TODO Auto-generated catch block
						jTextArea.setText("失去对服务器的连接。");
						break;
						//ex.printStackTrace();
					}
				}
				
			}
		});
		t.start();
		
		Thread t2=new Thread(new Runnable(){
			public void run() {
				
				while(true){
					client.sendNews("%6%6");//refresh
					try {
						Thread.sleep(3000);
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
				
			}
		});
		t2.start();
		
		
	}
	
	
	public String now() 
    {
        Date today = new Date();
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy.MM.dd hh:mm:ss: ");
        String dateString=null;
        try 
        {
            dateString = formatter.format(today);
            return dateString;
        } catch (IllegalArgumentException iae) {
            //result.setForeground(Color.red);
           // result.setText("Error: " + iae.getMessage());
        }
		return dateString;
    }
	
	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		this.setLayout(null);
		this.setSize(526, 414);
		this.add(getJButton(), null);
		this.add(getJScrollPane(), null);
		this.add(getJScrollPane1(), null);
		this.add(getJButton1(), null);
	}

	/**
	 * This method initializes jTextArea	
	 * 	
	 * @return javax.swing.JTextArea	
	 */
	private JTextPane getJTextArea() {
		if (jTextArea == null) {
			jTextArea = new JTextPane();
			jTextArea.setText("");
			jTextArea.addKeyListener(new java.awt.event.KeyAdapter() {
				public void keyReleased(java.awt.event.KeyEvent e) {
					if(e.isControlDown()&&e.getKeyCode()==10)
						jButton.doClick();
					//System.out.println("keyTyped()"+(KeyEvent.VK_ENTER+KeyEvent.VK_CONTROL)+" "+e.getKeyLocation()); // TODO Auto-generated Event stub keyTyped()
				}
			});
		}
		return jTextArea;
	}

	/**
	 * This method initializes jButton	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButton() {
		if (jButton == null) {
			jButton = new JButton();
			jButton.setBounds(new java.awt.Rectangle(393,369,99,31));
			jButton.setText("发送消息");
			jButton.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
				
					String s = nickname+"说:%8%8"+jTextArea.getText().replace("\r\n","%8%8");
					if(s!=""||s!="\r\n")
						client.sendNews(s);
					 jTextArea.setText("");
					System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
				}
			});
		}
		return jButton;
	}

	/**
	 * This method initializes jTextArea1	
	 * 	
	 * @return javax.swing.JTextArea	
	 */
	private JTextPane getJTextArea1() {
		if (jTextArea1 == null) {
			jTextArea1 = new JTextPane();
			jTextArea1.setText("");
			jTextArea1.setEditable(false);
		}
		return jTextArea1;
	}

	/**
	 * This method initializes jScrollPane	
	 * 	
	 * @return javax.swing.JScrollPane	
	 */
	private JScrollPane getJScrollPane() {
		if (jScrollPane == null) {
			jScrollPane = new JScrollPane();
			jScrollPane.setBounds(new java.awt.Rectangle(25,17,475,236));
			jScrollPane.setViewportView(getJTextArea1());
		}
		return jScrollPane;
	}

	/**
	 * This method initializes jScrollPane1	
	 * 	
	 * @return javax.swing.JScrollPane	
	 */
	private JScrollPane getJScrollPane1() {
		if (jScrollPane1 == null) {
			jScrollPane1 = new JScrollPane();
			jScrollPane1.setBounds(new java.awt.Rectangle(25,266,475,95));
			jScrollPane1.setViewportView(getJTextArea());
		}
		return jScrollPane1;
	}
	
	/**
	 * This method initializes jButton1	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButton1() {
		if (jButton1 == null) {
			jButton1 = new JButton();
			jButton1.setBounds(new java.awt.Rectangle(42,368,108,32));
			jButton1.setText("我要离开了");
			jButton1.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					client.sendNews("%end");//跳出服务器第2循环
					/*try {
						if(client.getNews()!=null)
							System.exit(1);
					} catch (IOException e1) {
						// TODO Auto-generated catch block
						System.exit(0);
						//e1.printStackTrace();
					}*/
					System.exit(1);
					
					System.out.println("aactionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
				}
			});
		}
		return jButton1;
	}

	public static void main(String[] args) throws Exception{
		Client cl = new Client(InetAddress.getByName("127.0.0.1"));
		ChatClientPanel cc =new ChatClientPanel("127.0.0.1","test");
		cc.show();
		//cc.show();
		//cc.setVisible(true);
		
	}

}  //  @jve:decl-index=0:visual-constraint="10,10"

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -