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

📄 privatechatframe.java

📁 j2se开发的即时聊天系统
💻 JAVA
字号:
package com.wczy.chatroom.clientui;

import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import java.awt.Rectangle;

import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JButton;

import com.wczy.chatroom.Protocal;
import com.wczy.chatroom.client.ChatRoomClient;
import javax.swing.JTextField;
import java.awt.Dimension;
import java.awt.Point;
import java.util.Calendar;

import javax.swing.JLabel;

public class PrivateChatFrame extends JFrame {

	private static final long serialVersionUID = 1L;

	private JPanel jContentPane = null;

	private JScrollPane jspHistory = null;

	private JButton btnSend = null;

	private JButton btnSendFile = null;

	private ChatRoomClient client; // @jve:decl-index=0:

	private String nickName;

	private String toNickName;

	private JTextArea txtHistory = null;

	private JTextField txtMessage = null;

	private JLabel jLabel = null;

	public PrivateChatFrame(ChatRoomClient client, String nickName,
			String toNickName) {
		super();
		this.client = client;
		this.nickName = nickName;
		this.toNickName = toNickName;
		initialize();
	}


	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		this.setSize(541, 310);
		this.setResizable(false);
		this.setContentPane(getJContentPane());
		this.setTitle("JFrame");
		this.addWindowListener(new java.awt.event.WindowAdapter() {
			public void windowOpened(java.awt.event.WindowEvent e) {
				PrivateChatFrame.this.setTitle(nickName + " 与 " + toNickName + "交谈中");
			}
		});
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			jLabel = new JLabel();
			jLabel.setBounds(new Rectangle(17, 2, 73, 23));
			jLabel.setText("聊天记录");
			jContentPane = new JPanel();
			jContentPane.setLayout(null);
			jContentPane.add(getJspHistory(), null);
			jContentPane.add(getBtnSend(), null);
			jContentPane.add(getBtnSendFile(), null);
			jContentPane.add(getTxtMessage(), null);
			jContentPane.add(jLabel, null);
		}
		return jContentPane;
	}

	/**
	 * This method initializes jspHistory
	 * 
	 * @return javax.swing.JScrollPane
	 */
	private JScrollPane getJspHistory() {
		if (jspHistory == null) {
			jspHistory = new JScrollPane();
			jspHistory.setBounds(new Rectangle(17, 28, 497, 203));
			jspHistory.setViewportView(getTxtHistory());
			jspHistory.setViewportView(getTxtHistory());
			jspHistory.setViewportView(getTxtHistory());
		}
		return jspHistory;
	}
	
	private String formatMessage(String from,String message){
		Calendar cal = Calendar.getInstance();
		int h = cal.get(Calendar.HOUR_OF_DAY);
		int m = cal.get(Calendar.MINUTE);
		int s = cal.get(Calendar.SECOND);
		return "["+((h>9)?"":"0")+h+":"
		+((m>9)?"":"0")+ m+":"
		+((s>9)?"":"0")+ s
		+"]"
		+"  "
		+from +" 说:\n    "
		+message;
	}
	/**
	 * This method initializes btnSend
	 * 
	 * @return javax.swing.JButton
	 */
	private JButton getBtnSend() {
		if (btnSend == null) {
			btnSend = new JButton();
			btnSend.setPreferredSize(new Dimension(60, 30));
			btnSend.setLocation(new Point(326, 242));
			btnSend.setSize(new Dimension(80, 30));
			btnSend.setText("发送");
			btnSend.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {

					if (txtMessage.getText().indexOf(Protocal.SEPARATOR) >= 0) {
						JOptionPane.showMessageDialog(PrivateChatFrame.this,
								"消息不得包含" + Protocal.SEPARATOR);
						return;
					}
					if (txtMessage.getText().trim().length() == 0) {
						JOptionPane.showMessageDialog(PrivateChatFrame.this,
								"消息不得为空");
						return;
					}
					client.sendPrivateMessage(toNickName, txtMessage.getText());
					txtHistory.append(formatMessage(nickName,txtMessage.getText())+"\n");
					jspHistory.getVerticalScrollBar().setValue(
							jspHistory.getVerticalScrollBar().getMaximum()
					);
					txtMessage.setText("");
					txtMessage.requestFocus();
				}
			});
		}
		return btnSend;
	}

	/**
	 * This method initializes btnSendFile
	 * 
	 * @return javax.swing.JButton
	 */
	private JButton getBtnSendFile() {
		if (btnSendFile == null) {
			btnSendFile = new JButton();
			btnSendFile.setPreferredSize(new Dimension(100, 30));
			btnSendFile.setLocation(new Point(416, 242));
			btnSendFile.setSize(new Dimension(100, 30));
			btnSendFile.setText("文件传送");
			btnSendFile.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					JFileChooser ch = new JFileChooser();
					if (ch.showOpenDialog(PrivateChatFrame.this) == JFileChooser.APPROVE_OPTION) {
						client.sendFileRequest(toNickName, ch.getSelectedFile()
								.getAbsolutePath());
					}
				}
			});
		}
		return btnSendFile;
	}

	/**
	 * This method initializes txtHistory
	 * 
	 * @return javax.swing.JTextArea
	 */
	private JTextArea getTxtHistory() {
		if (txtHistory == null) {
			txtHistory = new JTextArea();
			txtHistory.setEditable(false);
		}
		return txtHistory;
	}

	public void receiveMessage(String from, String message) {
		txtHistory.append(formatMessage(from, message)+ "\n");
		jspHistory.getVerticalScrollBar().setValue(
				jspHistory.getVerticalScrollBar().getMaximum()
		);
	}


	/**
	 * This method initializes txtMessage	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getTxtMessage() {
		if (txtMessage == null) {
			txtMessage = new JTextField();
			txtMessage.setLocation(new Point(16, 244));
			txtMessage.setSize(new Dimension(300, 30));
		}
		return txtMessage;
	}
} // @jve:decl-index=0:visual-constraint="10,10"

⌨️ 快捷键说明

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