📄 privatechatframe.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 + -