📄 message.java
字号:
/*
* Message.java
*
* Created on 2007年3月26日, 下午4:46
*/
package cn.spig1home.chinafish.fqq;
import cn.spig1home.chinafish.fqq.todo.XMLCreator;
import java.awt.Color;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.util.Hashtable;
import javax.swing.event.ChangeListener;
import javax.swing.text.BadLocationException;
import javax.swing.text.DefaultStyledDocument;
import javax.swing.text.Style;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyleContext;
/**
*
* @author Administrator
*/
public class Message extends javax.swing.JFrame {
String fromUser = new String();
String toUser = new String();
MainScreen userScreen;
BufferedOutputStream StreamToServer;
FileOutputStream sessionFile;
DefaultStyledDocument m_Document;
Style m_Style;
StyleContext m_StyleContext;
Hashtable m_Attributes;
Color m_messageSendColor;
Color m_messageReceivedColor;
Color m_SenderColor;
Color m_ReceiverColor;
/** Creates new form Message */
public Message(String fromUser, String toUser, MainScreen userScreen, BufferedOutputStream StreamToServer) {
super("FQQ - Message.java");
setResizable(false);
this.fromUser=fromUser;
this.toUser=toUser;
this.userScreen=userScreen;
this.StreamToServer=StreamToServer;
m_Attributes = new Hashtable();
m_StyleContext = new StyleContext();
m_SenderColor = new Color(0, 0, 255);
m_ReceiverColor = new Color(255, 0, 0);
m_messageSendColor = new Color(0, 0, 0);
m_messageReceivedColor = new Color(0, 0, 0);
m_Document = new DefaultStyledDocument(m_StyleContext);
addStyle();
initComponents();
this.m_toUser.setText(toUser);
m_DisplayMessage.setStyledDocument(m_Document);
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
private void initComponents() {
m_Save = new javax.swing.JButton();
jPanel1 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
m_toUser = new javax.swing.JLabel();
m_DisplayScroll = new javax.swing.JScrollPane();
m_DisplayMessage = new javax.swing.JTextPane();
m_WriteScroll = new javax.swing.JScrollPane();
m_WriteMessage = new javax.swing.JTextPane();
m_Send = new javax.swing.JButton();
b_Close = new javax.swing.JButton();
jMenuBar1 = new javax.swing.JMenuBar();
jMenu1 = new javax.swing.JMenu();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setResizable(false);
m_Save.setText("Save");
m_Save.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
m_SaveMouseClicked(evt);
}
});
jLabel1.setText("Chat With: ");
m_toUser.setText("Friend");
m_DisplayMessage.setEditable(false);
m_DisplayScroll.setViewportView(m_DisplayMessage);
m_WriteScroll.setViewportView(m_WriteMessage);
m_Send.setText("Send");
m_Send.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
m_SendMouseClicked(evt);
}
});
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(m_toUser)
.addContainerGap(146, Short.MAX_VALUE))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addComponent(m_WriteScroll, javax.swing.GroupLayout.DEFAULT_SIZE, 170, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(m_Send)
.addGap(8, 8, 8))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addComponent(m_DisplayScroll, javax.swing.GroupLayout.DEFAULT_SIZE, 232, Short.MAX_VALUE)
.addContainerGap())))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(m_toUser)
.addComponent(jLabel1))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(m_DisplayScroll, javax.swing.GroupLayout.PREFERRED_SIZE, 159, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(m_Send, javax.swing.GroupLayout.DEFAULT_SIZE, 58, Short.MAX_VALUE)
.addComponent(m_WriteScroll, javax.swing.GroupLayout.PREFERRED_SIZE, 58, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap())
);
b_Close.setText("Close");
b_Close.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
b_CloseMouseClicked(evt);
}
});
jMenu1.setText("Menu");
jMenuBar1.add(jMenu1);
setJMenuBar(jMenuBar1);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(m_Save)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 114, Short.MAX_VALUE)
.addComponent(b_Close, javax.swing.GroupLayout.PREFERRED_SIZE, 61, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(m_Save, javax.swing.GroupLayout.PREFERRED_SIZE, 42, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(b_Close, javax.swing.GroupLayout.PREFERRED_SIZE, 47, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void b_CloseMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_b_CloseMouseClicked
// TODO add your handling code here:
dispose();
removeFromList();
}//GEN-LAST:event_b_CloseMouseClicked
/**
* @Method:m_SendMouseClicked
* @arg:Listen to Mouse action - Clicked on Button m_Send
* @todo:sendMessage
* @return: void
*/
private void m_SendMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_m_SendMouseClicked
sendMessage();
}//GEN-LAST:event_m_SendMouseClicked
/**
* @Method:m_SaveMouseClicked
* @arg:Listen to Mouse action - Clicked on Button m_Save
* @todo:Save chat details as a text file locally.
* @return: void
*/
private void m_SaveMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_m_SaveMouseClicked
try {
sessionFile = new FileOutputStream("ChatSession.txt");
} catch (Exception e) {
System.out.println("Exception occured:"+e);
}
String text = m_DisplayMessage.getText();
byte [] textBytes = text.getBytes();
try {
sessionFile.write(textBytes, 0, textBytes.length);
} catch (Exception e) {
System.out.println("Exception occured:"+e);
}
try {
sessionFile.close();
} catch (Exception e) {
System.out.println("Exception occured:"+e);
}
}//GEN-LAST:event_m_SaveMouseClicked
/**
* @param args the command line arguments
*/
public void removeFromList() {
String str = new String();
for (int i = 0;i<userScreen.ListOfMessageWindowsByName.size();i++ ) {
str = (String)userScreen.ListOfMessageWindowsByName.elementAt(i);
if (str.equalsIgnoreCase(toUser)) {
userScreen.ListOfMessageWindowsByName.removeElementAt(i);
userScreen.ListOfMessageWindowsByObject.removeElementAt(i);
}
}
}
/**
* @Method:sendMessage
* @arg:
* @todo:send a message to "toUser", using m_WriteMessage.getText()
* @return: void
*/
// public void sendMessage() {
// sendMessage(m_WriteMessage.getText());
// }
/**
* @Method:sendMessage(String s_msg)
* @arg:String s_msg
* @todo:send a message to "toUser", using String s_msg
* @return: void
*/
public void sendMessage() {
String str = m_WriteMessage.getText();
if (str.indexOf("\n") == -1)
str = str + "\n";
m_WriteMessage.setText("");
Style m_TempStyle = (Style) m_Attributes.get("sender");
try {
m_Document.insertString(m_Document.getLength(), fromUser+" :\n", m_TempStyle);
m_TempStyle = (Style) m_Attributes.get("senderMessage");
m_Document.insertString(m_Document.getLength(), str+"\n", m_TempStyle);
} catch (Exception e) {
System.out.println("Exception occured here:"+e);
}
m_Send.setEnabled(false);
//m_ToolSend.setEnabled(false);
//m_MenuSend.setEnabled(false);
String [] values = new String[3];
values[0] = toUser;
values[1] = fromUser;
values[2] = str;
XMLCreator createRequest;
byte [] RequestGenerated;
createRequest = new XMLCreator("MSG", values);
RequestGenerated = createRequest.returnResult();
try {
StreamToServer.write(RequestGenerated, 0, RequestGenerated.length);
StreamToServer.flush();
} catch(Exception ef) {
System.out.println("Exception in Message.java"+ef);
}
}
void addStyle() {
m_Style=m_StyleContext.addStyle(null, null);
StyleConstants.setBold(m_Style, true);
StyleConstants.setForeground(m_Style, m_SenderColor);
m_Attributes.put("sender", m_Style);
m_Style=m_StyleContext.addStyle(null, null);
StyleConstants.setBold(m_Style, true);
StyleConstants.setForeground(m_Style, m_messageSendColor);
m_Attributes.put("senderMessage", m_Style);
m_Style=m_StyleContext.addStyle(null, null);
StyleConstants.setBold(m_Style, true);
StyleConstants.setForeground(m_Style, m_ReceiverColor);
m_Attributes.put("receiver", m_Style);
m_Style=m_StyleContext.addStyle(null, null);
StyleConstants.setBold(m_Style, true);
StyleConstants.setForeground(m_Style, m_messageReceivedColor);
m_Attributes.put("receiverMessage", m_Style);
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton b_Close;
private javax.swing.JLabel jLabel1;
private javax.swing.JMenu jMenu1;
private javax.swing.JMenuBar jMenuBar1;
private javax.swing.JPanel jPanel1;
private javax.swing.JTextPane m_DisplayMessage;
private javax.swing.JScrollPane m_DisplayScroll;
private javax.swing.JButton m_Save;
private javax.swing.JButton m_Send;
private javax.swing.JTextPane m_WriteMessage;
private javax.swing.JScrollPane m_WriteScroll;
private javax.swing.JLabel m_toUser;
// End of variables declaration//GEN-END:variables
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -