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

📄 message.java

📁 下了就知道了
💻 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 + -