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

📄 chatclient.java

📁 一个以tomcat作为服务器的C/S架构的聊天系统
💻 JAVA
字号:
package com.cxz.httpchat.client;import java.io.IOException;import java.util.Date;import java.util.List;import com.cloudgarden.resource.SWTResourceManager;import com.cxz.httpchat.message.HeartBeatRequest;import com.cxz.httpchat.message.HeartBeatResponse;import com.cxz.httpchat.message.Message;import com.cxz.httpchat.message.UploadRequest;import com.cxz.httpchat.message.UploadResponse;import com.cxz.httpchat.util.MessagePoster;import org.apache.commons.httpclient.HttpException;import org.eclipse.swt.events.ShellEvent;import org.eclipse.swt.layout.FormAttachment;import org.eclipse.swt.layout.FormData;import org.eclipse.swt.layout.FormLayout;import org.eclipse.swt.widgets.Button;import org.eclipse.swt.widgets.Display;import org.eclipse.swt.widgets.MessageBox;import org.eclipse.swt.widgets.Shell;import org.eclipse.swt.widgets.Text;import org.eclipse.swt.SWT;import org.eclipse.swt.custom.CTabFolder;import org.eclipse.swt.custom.CTabItem;import org.eclipse.swt.events.KeyAdapter;import org.eclipse.swt.events.KeyEvent;import org.eclipse.swt.events.MouseAdapter;import org.eclipse.swt.events.MouseEvent;import org.eclipse.swt.events.ShellAdapter;/** * This code was edited or generated using CloudGarden's Jigloo SWT/Swing GUI * Builder, which is free for non-commercial use. If Jigloo is being used * commercially (ie, by a corporation, company or business for any purpose * whatever) then you should purchase a license for each developer using Jigloo. * Please visit www.cloudgarden.com for details. Use of Jigloo implies * acceptance of these licensing terms. A COMMERCIAL LICENSE HAS NOT BEEN * PURCHASED FOR THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED LEGALLY FOR * ANY CORPORATE OR COMMERCIAL PURPOSE. */public class ChatClient extends org.eclipse.swt.widgets.Dialog implements		Runnable {	private static final int INTERVAL_SECONDS = 1;		private Shell dialogShell;	private boolean flag = true;	private Button sendMessage;	private CTabItem setupTab;	private CTabItem messageTab;	private Text messages;	private CTabFolder myTabFolder;	private Text input;		private int usrId = 1;	private String pwd = "19841230";	private int distId = 2;		MessagePoster<UploadRequest, UploadResponse> postUploading = null;	MessagePoster<HeartBeatRequest, HeartBeatResponse> postHeartBeat = null;		Thread heartBeatThread = null;		List<Message> list = null;	/**	 * Auto-generated main method to display this org.eclipse.swt.widgets.Dialog	 * inside a new Shell.	 */	public static void main(String[] args) {		try {			Display display = Display.getDefault();			Shell shell = new Shell(display);			ChatClient inst = new ChatClient(shell, SWT.NULL);			inst.open();		} catch (Exception e) {			e.printStackTrace();		}	}	public ChatClient(Shell parent, int style) {		super(parent, style);		postUploading = new MessagePoster<UploadRequest, UploadResponse>();		postHeartBeat = new MessagePoster<HeartBeatRequest, HeartBeatResponse>();	}	public void open() {		try {			this.start();			Shell parent = getParent();			dialogShell = new Shell(parent, SWT.DIALOG_TRIM					| SWT.APPLICATION_MODAL);			{				// Register as a resource user - SWTResourceManager will				// handle the obtaining and disposing of resources				SWTResourceManager.registerResourceUser(dialogShell);			}			dialogShell.setLayout(new FormLayout());			dialogShell.layout();			dialogShell.pack();			dialogShell.setSize(709, 429);			{				myTabFolder = new CTabFolder(dialogShell, SWT.BORDER);				FormData MyTabFolderLData = new FormData();				MyTabFolderLData.width = 697;				MyTabFolderLData.height = 309;				MyTabFolderLData.left =  new FormAttachment(0, 1000, 0);				MyTabFolderLData.top =  new FormAttachment(0, 1000, 12);				myTabFolder.setLayoutData(MyTabFolderLData);				{					messageTab = new CTabItem(myTabFolder, SWT.NONE);					messageTab.setText("Message");					{						messages = new Text(myTabFolder, SWT.MULTI | SWT.WRAP | SWT.BORDER);						messageTab.setControl(messages);						messages.setEditable(false);						messages.setFont(SWTResourceManager.getFont("Tahoma", 14, 0, false, false));					}				}				{					setupTab = new CTabItem(myTabFolder, SWT.NONE);					setupTab.setText("Setup Page");				}				myTabFolder.setSelection(0);			}			{				input = new Text(dialogShell, SWT.BORDER);				FormData sentenseLData = new FormData();				sentenseLData.width = 519;				sentenseLData.height = 19;				sentenseLData.left =  new FormAttachment(0, 1000, 39);				sentenseLData.top =  new FormAttachment(0, 1000, 355);				input.setLayoutData(sentenseLData);				input.setFont(SWTResourceManager.getFont("Tahoma", 14, 0,						false, false));				input.addKeyListener(new KeyAdapter() {					public void keyPressed(KeyEvent evt) {						inputKeyPressed(evt);					}				});			}			{				sendMessage = new Button(dialogShell, SWT.PUSH | SWT.CENTER);				sendMessage.setText("Send");				FormData sendMessageLData = new FormData();				sendMessageLData.width = 80;				sendMessageLData.height = 30;				sendMessageLData.left =  new FormAttachment(0, 1000, 605);				sendMessageLData.top =  new FormAttachment(0, 1000, 353);				sendMessage.setLayoutData(sendMessageLData);				sendMessage.addMouseListener(new MouseAdapter() {					public void mouseUp(MouseEvent evt) {						sendMessage(input.getText());					}				});			}			dialogShell.addShellListener(new ShellAdapter() {				public void shellClosed(ShellEvent evt) {					flag = false;// stop the heart beat thread					if(heartBeatThread != null)						heartBeatThread.interrupt();				}			});			dialogShell.setLocation(getParent().toDisplay(100, 100));			dialogShell.open();			Display display = dialogShell.getDisplay();						while (!dialogShell.isDisposed()) {				if (!display.readAndDispatch())					display.sleep();								//Jam code!				if(list != null){					synchronized(list){						for(int i = 0; i < list.size(); i++){							messages.append("User-" + list.get(i).getFrom() + " said to you: " + list.get(i).getContent() + "\n");						}						list = null;					}				}			}		} catch (Exception e) {			e.printStackTrace();		}	}	public void run() {		while(flag){			HeartBeatRequest request = makeHeartBeat();			HeartBeatResponse response = null;			try {				response = postHeartBeat.postXML(request);				if(response.getMessages().size() != 0){					displayMessage(response.getMessages());				}				Thread.sleep(INTERVAL_SECONDS * 1000);			} catch (HttpException e) {				// TODO Auto-generated catch block				e.printStackTrace();			} catch (IOException e) {				// TODO Auto-generated catch block				e.printStackTrace();			}catch (InterruptedException e) {				// TODO Auto-generated catch block				e.printStackTrace();			}		}	}		private void displayMessage(List<Message> mess) {		if(mess != null){			if(list != null){				synchronized(list){					list = mess;				}			} else {				list = mess;			}		}	}	private HeartBeatRequest makeHeartBeat(){		HeartBeatRequest heartBeat = new HeartBeatRequest();		heartBeat.setId(usrId);		heartBeat.setPwd(pwd);		return heartBeat;	}		private void start(){		heartBeatThread = new Thread(this, "Heart Beat Thread");		heartBeatThread.start();	}	private void inputKeyPressed(KeyEvent evt) {		if (evt.keyCode == SWT.CR//check the enter pressing				|| evt.keyCode == SWT.KEYPAD_CR) {			sendMessage(input.getText());		}	}	private void sendMessage(String message) {		if (message != null && !message.equals("")) {			//To check whether the input is null			printToScreen(message);			sendToServer(message);		} else {			Display display = Display.getDefault();			Shell shell = new Shell(display);			MessageBox messageBox = new MessageBox(shell, SWT.OK);			messageBox.setMessage("Can't send empty message.");			messageBox.open();		}	}	private void sendToServer(String message) {		UploadRequest upload = new UploadRequest();			upload.setId(usrId);		upload.setTo(distId);		upload.setDate(new Date(System.currentTimeMillis()));		upload.setPwd(pwd);		upload.setContent(message);				UploadResponse response = null;		try {			response = postUploading.postXML(upload);			System.out.println("UploadResponse: " + response.isFlag());		} catch (HttpException e) {			// TODO Auto-generated catch block			e.printStackTrace();		} catch (IOException e) {			// TODO Auto-generated catch block			e.printStackTrace();		}	}	private void printToScreen(String message) {		messages.append("You said to User-" + distId + ": " + input.getText() + "\n");		input.setText("");	}}

⌨️ 快捷键说明

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