亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? chatframe.java

?? java chat java chat簡易聊天室程序源代碼,有很高的參考價值,能在它的基礎上進行2次開發.
?? JAVA
字號:
/* * ChatFrame.java * * Created on 2008年4月21日, 上午9:23 */package chat.client;import chat.common.ChatModelListener;import chat.common.LoginMessage;import chat.common.LogoutMessage;import chat.common.TextMessage;import chat.common.UpdateUserMessage;import chat.common.User;import chat.common.UserListMessage;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.io.IOException;import java.util.ArrayList;import java.util.Arrays;import java.util.Enumeration;import java.util.List;import java.util.logging.Level;import java.util.logging.Logger;import javax.swing.JOptionPane;import javax.swing.JScrollBar;import javax.swing.text.BadLocationException;import javax.swing.text.html.HTMLDocument;/** * * @author  Administrator */public class ChatFrame extends javax.swing.JFrame implements ChatModelListener {    private FaceChooserDialog faceDialog;    /** Creates new form ChatFrame */    public ChatFrame() {        initComponents();        userList.setSelectedIndex(0);        this.addWindowListener(new WindowAdapter() {            @Override            public void windowClosing(WindowEvent e) {                LogoutMessage message = new LogoutMessage();                message.setUser(DefaultClientModel.getInstance().user);                DefaultClientModel.getInstance().sendMsg(message);                setVisible(false);            }        });    }    /** 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() {        jScrollPane2 = new javax.swing.JScrollPane();        userList = new javax.swing.JList();        jLabel1 = new javax.swing.JLabel();        message = new javax.swing.JTextField();        send = new javax.swing.JButton();        jScrollPane1 = new javax.swing.JScrollPane();        content = new javax.swing.JEditorPane();        selectFace = new javax.swing.JButton();        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);        userList.setModel(DefaultClientModel.getInstance().getListModel());        userList.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);        jScrollPane2.setViewportView(userList);        jLabel1.setText("消息:");        send.setText("發送");        send.addActionListener(new java.awt.event.ActionListener() {            public void actionPerformed(java.awt.event.ActionEvent evt) {                sendActionPerformed(evt);            }        });        content.setContentType("text/html");        content.setDocument(DefaultClientModel.getInstance().getDocument());        content.setEditable(false);        jScrollPane1.setViewportView(content);        selectFace.setText("插入表情");        selectFace.addActionListener(new java.awt.event.ActionListener() {            public void actionPerformed(java.awt.event.ActionEvent evt) {                selectFaceActionPerformed(evt);            }        });        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());        getContentPane().setLayout(layout);        layout.setHorizontalGroup(            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)            .addGroup(layout.createSequentialGroup()                .addContainerGap()                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)                    .addGroup(layout.createSequentialGroup()                        .addComponent(jLabel1)                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)                        .addComponent(message, javax.swing.GroupLayout.DEFAULT_SIZE, 278, Short.MAX_VALUE))                    .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 318, Short.MAX_VALUE))                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)                        .addComponent(send, javax.swing.GroupLayout.PREFERRED_SIZE, 83, javax.swing.GroupLayout.PREFERRED_SIZE)                        .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 83, javax.swing.GroupLayout.PREFERRED_SIZE))                    .addComponent(selectFace, javax.swing.GroupLayout.Alignment.TRAILING))                .addContainerGap())        );        layout.setVerticalGroup(            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)            .addGroup(layout.createSequentialGroup()                .addContainerGap()                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)                    .addGroup(layout.createSequentialGroup()                        .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 211, Short.MAX_VALUE)                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)                        .addComponent(selectFace))                    .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 242, Short.MAX_VALUE))                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)                    .addComponent(jLabel1)                    .addComponent(send)                    .addComponent(message, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE))                .addContainerGap())        );        pack();    }// </editor-fold>//GEN-END:initComponents    private void sendActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_sendActionPerformed        // TODO add your handling code here:        if (message.getText().trim().equals("")) {            JOptionPane.showMessageDialog(this, "消息不能為空!");            return;        }        User user = (User) userList.getSelectedValue();        if (user == null) {            JOptionPane.showMessageDialog(this, "沒有選擇聊天對象!");            return;        }        List lUser = null;        TextMessage msg = new TextMessage();        msg.setUser(DefaultClientModel.getInstance().user);        //選擇所有人        if (user.equals(User.createAllUser())) {            //從List中獲取所有用戶信息            User[] users = new User[DefaultClientModel.getInstance().listModel.getSize()];            DefaultClientModel.getInstance().listModel.copyInto(users);            lUser = Arrays.asList(users);            //轉換成ArrayList ,由于默認轉換的list不支持remove功能。            //但是需要將 “所有人”選項 提交給服務器之前刪除            List temp = new ArrayList();            temp.addAll(lUser);            temp.remove(User.createAllUser());            lUser = temp;        } else {            //找到聊天對象            lUser = new ArrayList();            lUser.add(userList.getSelectedValue());        }        //發送文本消息        msg.setTo(lUser);        msg.setContent(message.getText());        DefaultClientModel.getInstance().sendMsg(msg);    }//GEN-LAST:event_sendActionPerformed    private void selectFaceActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_selectFaceActionPerformed        // TODO add your handling code here:        if(faceDialog == null){            faceDialog = new FaceChooserDialog(ChatFrame.this);        }        faceDialog.setVisible(true);        message.setText(message.getText()+faceDialog.getFaceString());    }//GEN-LAST:event_selectFaceActionPerformed    /**     * @param args the command line arguments     */    public static void main(String args[]) {        java.awt.EventQueue.invokeLater(new Runnable() {            public void run() {                new ChatFrame().setVisible(true);            }        });    }    // Variables declaration - do not modify//GEN-BEGIN:variables    private javax.swing.JEditorPane content;    private javax.swing.JLabel jLabel1;    private javax.swing.JScrollPane jScrollPane1;    private javax.swing.JScrollPane jScrollPane2;    private javax.swing.JTextField message;    private javax.swing.JButton selectFace;    private javax.swing.JButton send;    private javax.swing.JList userList;    // End of variables declaration//GEN-END:variables    public void doLogin(LoginMessage message) {    }    public void doLogout(LogoutMessage message) {    }    public void doUpdateUser(UpdateUserMessage message) {    }    public void doUserList(UserListMessage message) {    }    public void doTextMessage(TextMessage msg) {        //處理接收到文本消息后的表現層處理        //如果是自己發送的文本消息        if(msg.getUser().equals(DefaultClientModel.getInstance().user)){            try {                HTMLDocument doc = (HTMLDocument)DefaultClientModel.getInstance().getDocument();                doc.insertBeforeEnd(doc.getDefaultRootElement(), DefaultClientModel.getInstance().insertFace("<pre>I Say:" + msg.getContent() + "</pre><br/>"));                                message.setText("");            } catch (BadLocationException ex) {                Logger.getLogger(ChatFrame.class.getName()).log(Level.SEVERE, null, ex);            } catch (IOException ex) {                Logger.getLogger(ChatFrame.class.getName()).log(Level.SEVERE, null, ex);            }        }else{            try {                //服務器轉發的文本消息                HTMLDocument doc = (HTMLDocument)DefaultClientModel.getInstance().getDocument();                doc.insertBeforeEnd(doc.getDefaultRootElement(), DefaultClientModel.getInstance().insertFace("<pre>"+msg.getUser() + " Says:" + msg.getContent() + "</pre><br/>"));                //content.append(msg.getUser()+" Says:"+msg.getContent()+"\r\n");            } catch (BadLocationException ex) {                Logger.getLogger(ChatFrame.class.getName()).log(Level.SEVERE, null, ex);            } catch (IOException ex) {                Logger.getLogger(ChatFrame.class.getName()).log(Level.SEVERE, null, ex);            }            //content.append(msg.getUser()+" Says:"+msg.getContent()+"\r\n");        }        //滾動條始終定位到最新的消息        JScrollBar jsb = jScrollPane1.getVerticalScrollBar();        jsb.setValue(content.getHeight());    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩亚洲欧美在线观看| 日韩一区二区麻豆国产| 欧美日韩黄视频| 国产视频一区二区在线| 亚洲一线二线三线久久久| 看电视剧不卡顿的网站| 色综合久久久久综合99| 欧美成人aa大片| 欧美国产综合色视频| 久久99精品久久久久久国产越南| 久久综合九色综合97婷婷女人| 日韩一区在线免费观看| 久久精品国产亚洲5555| 色噜噜狠狠成人中文综合| 精品久久99ma| 日日摸夜夜添夜夜添精品视频| 成人免费视频一区二区| 精品日本一线二线三线不卡| 一卡二卡三卡日韩欧美| 成人激情综合网站| 久久久综合精品| 日本中文字幕一区二区有限公司| 一本久久综合亚洲鲁鲁五月天| 久久精品在线观看| 美美哒免费高清在线观看视频一区二区 | 日韩色在线观看| 国产成人福利片| 青青青伊人色综合久久| 亚洲精品视频观看| 美日韩一区二区| 欧美日韩综合一区| 一区二区三区精品| 99国产精品国产精品久久| 国产日韩精品久久久| 国产在线精品一区二区三区不卡 | 18成人在线视频| 国产精品亚洲综合一区在线观看| 日韩免费高清av| 久久99国产精品久久| 26uuu精品一区二区三区四区在线| 一区二区三区欧美亚洲| 国产免费观看久久| 1000精品久久久久久久久| 国产成a人亚洲| 国产欧美日韩麻豆91| 国产jizzjizz一区二区| 国产婷婷一区二区| www.欧美亚洲| 亚洲免费毛片网站| 欧美日韩成人在线一区| 秋霞成人午夜伦在线观看| 欧美精品高清视频| 毛片av一区二区| 久久久www成人免费毛片麻豆| 国产综合色视频| 欧美激情综合在线| 95精品视频在线| 午夜精品一区二区三区电影天堂| 91精品国产综合久久久久| 久久99精品网久久| 国产日韩欧美精品电影三级在线| av电影天堂一区二区在线| 一区二区三区四区五区视频在线观看| 欧美日韩一卡二卡三卡| 九九热在线视频观看这里只有精品| 久久精品欧美一区二区三区不卡| 成人一区二区三区在线观看| 玉米视频成人免费看| 欧美一级专区免费大片| 国产成人在线网站| 亚洲午夜精品网| 久久欧美中文字幕| 91福利国产精品| 精品一区二区在线看| 国产精品女同一区二区三区| 欧美亚洲动漫另类| 国产一区二区三区四| 亚洲欧洲成人自拍| 日韩免费观看高清完整版 | 国产精品538一区二区在线| 国产精品色眯眯| 欧美日韩视频专区在线播放| 激情综合色综合久久综合| 亚洲天堂av老司机| 日韩欧美黄色影院| 色素色在线综合| 国产一区二区三区精品视频| 亚洲自拍偷拍九九九| 久久青草欧美一区二区三区| 欧美三区免费完整视频在线观看| 国产一区二区三区电影在线观看 | 91精品一区二区三区久久久久久 | 国产成人欧美日韩在线电影| 亚洲精品视频一区二区| 久久精品一级爱片| 欧美日韩精品久久久| 大陆成人av片| 久久国内精品视频| 亚洲国产美国国产综合一区二区| 国产欧美日韩一区二区三区在线观看| 欧美男同性恋视频网站| 91小视频免费观看| 国产91露脸合集magnet| 美女久久久精品| 五月天精品一区二区三区| 亚洲欧美另类小说| 国产午夜亚洲精品理论片色戒| 欧美放荡的少妇| 日本久久精品电影| 91美女片黄在线观看| 大美女一区二区三区| 国产一区二区在线观看免费| 亚洲第一成年网| 亚洲黄色片在线观看| 综合欧美亚洲日本| **欧美大码日韩| 欧美日韩在线精品一区二区三区激情| 97se亚洲国产综合在线| youjizz国产精品| 成人精品国产免费网站| 高清av一区二区| 国产白丝精品91爽爽久久| 国产精品77777竹菊影视小说| 久久机这里只有精品| 麻豆国产精品777777在线| 日韩av中文字幕一区二区| 日韩黄色免费电影| 日本欧洲一区二区| 在线观看国产日韩| 色综合色狠狠天天综合色| aaa欧美大片| 在线观看视频欧美| 欧美日韩精品系列| 欧美电视剧在线观看完整版| 欧美r级在线观看| 国产亚洲午夜高清国产拍精品 | 国产日韩欧美精品电影三级在线| 国产日韩欧美高清| 亚洲欧美影音先锋| 亚洲国产欧美日韩另类综合| 视频一区二区三区中文字幕| 免费在线观看日韩欧美| 久久99热这里只有精品| 国产成人av资源| 91视频一区二区| 欧美精品三级日韩久久| 欧美变态凌虐bdsm| 国产精品久久久久久久久图文区 | 国精品**一区二区三区在线蜜桃| 国产精品一区二区久久不卡 | 韩国av一区二区| 成人深夜在线观看| 欧美日韩在线三级| 精品精品欲导航| 日韩一区有码在线| 日本视频中文字幕一区二区三区| 激情综合一区二区三区| 91香蕉视频mp4| 日韩一级视频免费观看在线| 国产欧美一区在线| 午夜精品一区二区三区电影天堂| 国产米奇在线777精品观看| 99在线精品观看| 欧美成人性福生活免费看| 国产精品久久久久久久岛一牛影视| 一区二区三区在线观看欧美| 看电视剧不卡顿的网站| 91理论电影在线观看| 日韩欧美一区二区在线视频| 日本一区二区电影| 奇米综合一区二区三区精品视频 | 色狠狠av一区二区三区| 精品国产免费一区二区三区四区| 中文字幕一区二区三区精华液| 日本女人一区二区三区| 粉嫩绯色av一区二区在线观看| 欧美男同性恋视频网站| 国产精品初高中害羞小美女文| 琪琪久久久久日韩精品| 色综合久久99| 国产午夜精品美女毛片视频| 性感美女极品91精品| www.成人在线| 久久免费美女视频| 日本欧美一区二区在线观看| 欧洲一区在线观看| 国产精品国产三级国产有无不卡| 麻豆国产一区二区| 91麻豆精品国产91久久久使用方法| 国产精品国产三级国产普通话三级| 激情综合网av| 日韩一区和二区| 天天影视涩香欲综合网| 一本大道综合伊人精品热热| 中文字幕免费不卡| 国产成人高清在线| 国产色一区二区| 国产成人一区在线| 国产欧美精品一区二区色综合朱莉| 在线观看日韩毛片|