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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? swingchatclient.java

?? 用Mina 實(shí)現(xiàn) 簡單聊天功能 相當(dāng)于Java C/S 結(jié)構(gòu) 大家可以在此基礎(chǔ)上去進(jìn)行完善
?? JAVA
字號:
package com.mina.chat.client;


import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.InetSocketAddress;
import java.net.SocketAddress;

import javax.swing.AbstractAction;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollBar;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;

import org.apache.mina.transport.socket.nio.NioSocketConnector;

import com.mina.chat.client.SwingChatClientHandler.Callback;

/**
 * 客戶端
 * 用 Swing 編寫 Java C/S 結(jié)構(gòu)的網(wǎng)絡(luò)通訊
 * @author 1
 * @version 1.0
 */
public class SwingChatClient extends JFrame implements Callback {
    private static final long serialVersionUID = 1538675161745436968L;

    private JTextField inputText;

    private JButton loginButton;

    private JButton quitButton;

    private JButton closeButton;

    private JTextField serverField;

    private JTextField nameField;

    private JTextArea area;

    private JScrollBar scroll;

    private ChatClientSupport client;

    private SwingChatClientHandler handler;

    private NioSocketConnector connector;

    public SwingChatClient() {
        super("Chat Client based on Apache MINA");

        connector = new NioSocketConnector();

        loginButton = new JButton(new LoginAction());
        loginButton.setText("Connect");
        quitButton = new JButton(new LogoutAction());
        quitButton.setText("Disconnect");
        closeButton = new JButton(new QuitAction());
        closeButton.setText("Quit");
        inputText = new JTextField(30);
        inputText.setAction(new BroadcastAction());
        area = new JTextArea(10, 50);
        area.setLineWrap(true);
        area.setEditable(false);
        scroll = new JScrollBar();
        scroll.add(area);
        nameField = new JTextField(10);
        nameField.setEditable(false);
        serverField = new JTextField(10);
        serverField.setEditable(false);

        JPanel h = new JPanel();
        h.setLayout(new BoxLayout(h, BoxLayout.LINE_AXIS));
        h.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
        JLabel nameLabel = new JLabel("Name: ");
        JLabel serverLabel = new JLabel("Server: ");
        h.add(nameLabel);
        h.add(Box.createRigidArea(new Dimension(10, 0)));
        h.add(nameField);
        h.add(Box.createRigidArea(new Dimension(10, 0)));
        h.add(Box.createHorizontalGlue());
        h.add(Box.createRigidArea(new Dimension(10, 0)));
        h.add(serverLabel);
        h.add(Box.createRigidArea(new Dimension(10, 0)));
        h.add(serverField);

        JPanel p = new JPanel();
        p.setLayout(new BoxLayout(p, BoxLayout.LINE_AXIS));
        p.setBorder(new EmptyBorder(10, 10, 10, 10));

        JPanel left = new JPanel();
        left.setLayout(new BoxLayout(left, BoxLayout.PAGE_AXIS));
        left.add(area);
        left.add(Box.createRigidArea(new Dimension(0, 5)));
        left.add(Box.createHorizontalGlue());
        left.add(inputText);

        JPanel right = new JPanel();
        right.setLayout(new BoxLayout(right, BoxLayout.PAGE_AXIS));
        right.add(loginButton);
        right.add(Box.createRigidArea(new Dimension(0, 5)));
        right.add(quitButton);
        right.add(Box.createHorizontalGlue());
        right.add(Box.createRigidArea(new Dimension(0, 25)));
        right.add(closeButton);

        p.add(left);
        p.add(Box.createRigidArea(new Dimension(10, 0)));
        p.add(right);

        getContentPane().add(h, BorderLayout.NORTH);
        getContentPane().add(p);

        closeButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                client.quit();
                connector.dispose(); 
                dispose();
            }
        });
        setLoggedOut();
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

    public class LoginAction extends AbstractAction {
        private static final long serialVersionUID = 3596719854773863244L;

        public void actionPerformed(ActionEvent e) {

            ConnectDialog dialog = new ConnectDialog(SwingChatClient.this);
            dialog.pack();
            dialog.setVisible(true);

            if (dialog.isCancelled()) {
                return;
            }

            SocketAddress address = parseSocketAddress(dialog
                    .getServerAddress());
            String name = dialog.getUsername();

            handler = new SwingChatClientHandler(SwingChatClient.this);
            client = new ChatClientSupport(name, handler);
            nameField.setText(name);
            serverField.setText(dialog.getServerAddress());

            if (!client.connect(connector, address, dialog.isUseSsl())) {
                JOptionPane.showMessageDialog(SwingChatClient.this,
                        "Could not connect to " + dialog.getServerAddress()
                                + ". ");
            }
        }
    }

    private class LogoutAction extends AbstractAction {
        private static final long serialVersionUID = 1655297424639924560L;

        public void actionPerformed(ActionEvent e) {
            try {
                client.quit();
                setLoggedOut();
            } catch (Exception e1) {
                JOptionPane.showMessageDialog(SwingChatClient.this,
                        "Session could not be closed.");
            }
        }
    }

    private class BroadcastAction extends AbstractAction {
        private static final long serialVersionUID = -6276019615521905411L;

        public void actionPerformed(ActionEvent e) {
            client.broadcast(inputText.getText());
            inputText.setText("");
        }
    }

    private class QuitAction extends AbstractAction {
        private static final long serialVersionUID = -6389802816912005370L;

        public void actionPerformed(ActionEvent e) {
            if (client != null) {
                client.quit();
            }
            SwingChatClient.this.dispose();
        }
    }

    private void setLoggedOut() {
        inputText.setEnabled(false);
        quitButton.setEnabled(false);
        loginButton.setEnabled(true);
    }

    private void setLoggedIn() {
        area.setText("");
        inputText.setEnabled(true);
        quitButton.setEnabled(true);
        loginButton.setEnabled(false);
    }

    private void append(String text) {
        area.append(text);
    }

    private void notifyError(String message) {
        JOptionPane.showMessageDialog(this, message);
    }

    private SocketAddress parseSocketAddress(String s) {
        s = s.trim();
        int colonIndex = s.indexOf(":");
        if (colonIndex > 0) {
            String host = s.substring(0, colonIndex);
            int port = parsePort(s.substring(colonIndex + 1));
            return new InetSocketAddress(host, port);
        } else {
            int port = parsePort(s.substring(colonIndex + 1));
            return new InetSocketAddress(port);
        }
    }

    private int parsePort(String s) {
        try {
            return Integer.parseInt(s);
        } catch (NumberFormatException nfe) {
            throw new IllegalArgumentException("Illegal port number: " + s);
        }
    }

    public void connected() {
        //client.login();
    }

    public void disconnected() {
        append("Connection closed.\n");
        setLoggedOut();
    }

    public void error(String message) {
        notifyError(message + "\n");
    }

    public void loggedIn() {
        setLoggedIn();
        append("You have joined the chat session.\n");
    }

    public void loggedOut() {
        append("You have left the chat session.\n");
        setLoggedOut();
    }

    public void messageReceived(String message) {
        append(message + "\n");
    }

    public static void main(String[] args) {
        SwingChatClient client = new SwingChatClient();
        client.pack();
        client.setVisible(true);
    }
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品小仙女| 成人av免费观看| 中文字幕日韩一区二区| 制服丝袜激情欧洲亚洲| 成人精品国产一区二区4080| 久久国产精品第一页| 亚洲视频在线一区| 久久久精品影视| 欧美精品久久99| 色94色欧美sute亚洲线路二| 国产精品资源在线看| 日韩高清欧美激情| 亚洲一区二区在线免费看| 欧美国产成人在线| 久久久99久久精品欧美| 69堂精品视频| 欧美绝品在线观看成人午夜影视| 成人国产精品免费观看视频| 精品一区二区三区在线播放视频| 亚洲一区电影777| 亚洲黄色尤物视频| 国产精品久久久久久久久免费樱桃| 欧美精品一区二区三区视频| 欧美疯狂做受xxxx富婆| 欧美日韩一区在线| 在线观看视频一区二区 | 日韩中文字幕一区二区三区| 亚洲欧洲成人自拍| 国产精品久久久久国产精品日日| 久久婷婷综合激情| 久久综合五月天婷婷伊人| 日韩视频一区在线观看| 91 com成人网| 91精品国产综合久久婷婷香蕉| 欧美在线综合视频| 欧美色综合久久| 欧美日韩国产免费| 欧美日韩高清不卡| 91精品视频网| 亚洲一区二区四区蜜桃| 亚洲主播在线观看| 亚洲成人激情av| 日日嗨av一区二区三区四区| 日韩电影免费在线看| 午夜精品视频一区| 日本va欧美va精品发布| 捆绑调教一区二区三区| 韩国欧美一区二区| 国产精品资源在线看| 成人污视频在线观看| 99久久国产免费看| 欧美专区亚洲专区| 在线91免费看| 欧美精品一区二区在线观看| 久久九九99视频| 亚洲欧洲国产日本综合| 亚洲综合在线免费观看| 丝袜诱惑制服诱惑色一区在线观看 | 五月婷婷综合激情| 日韩av一区二区三区四区| 久久 天天综合| 丁香激情综合五月| 欧美综合天天夜夜久久| 日韩一级大片在线| 国产欧美日韩在线| 夜夜嗨av一区二区三区中文字幕| 偷拍自拍另类欧美| 国产精品911| 日本久久一区二区| 欧美成人一区二区三区| 中文字幕一区二区三| 亚洲线精品一区二区三区| 精品在线一区二区三区| av成人免费在线观看| 欧美色综合久久| 国产丝袜美腿一区二区三区| 亚洲私人黄色宅男| 奇米影视7777精品一区二区| 国产激情精品久久久第一区二区| 色婷婷国产精品综合在线观看| 日韩美女在线视频| 自拍偷拍欧美精品| 久国产精品韩国三级视频| 一本一本大道香蕉久在线精品| 欧美一级生活片| 亚洲理论在线观看| 国产一区不卡在线| 欧美体内she精视频| 国产农村妇女毛片精品久久麻豆| 亚洲成人自拍网| av一区二区三区| 精品精品国产高清a毛片牛牛| 亚洲日本在线天堂| 国内精品第一页| 69堂亚洲精品首页| 自拍偷拍欧美激情| 国产成人综合网| 日韩欧美综合在线| 亚洲国产精品久久久久秋霞影院| 国产福利一区二区三区视频| 欧美丰满少妇xxxxx高潮对白| 亚洲视频中文字幕| 国产精品66部| 欧美zozozo| 日韩精品电影在线| 在线观看av不卡| 国产精品热久久久久夜色精品三区 | 国产日韩欧美精品综合| 视频在线观看一区二区三区| 99re成人精品视频| 欧美—级在线免费片| 久久精品国产99| 欧美日韩免费电影| 亚洲精品国产一区二区精华液 | 在线综合视频播放| 一区二区三区欧美| 懂色av一区二区在线播放| 精品久久久久av影院| 三级亚洲高清视频| 欧美日韩亚洲丝袜制服| 一区二区三区高清| 91久久精品一区二区三| 亚洲女爱视频在线| 97久久超碰国产精品| 国产精品人成在线观看免费| 国产一区二区调教| 久久影院视频免费| 国产一区二区三区久久久| 日韩免费视频一区| 免费在线观看一区| 欧美不卡123| 国内精品伊人久久久久影院对白| 日韩久久免费av| 久久精品国产成人一区二区三区 | 美女国产一区二区三区| 欧美精品1区2区3区| 日韩专区在线视频| 欧美一二三区在线观看| 免费成人在线播放| 精品国产三级电影在线观看| 九九精品视频在线看| 久久色视频免费观看| 国产成人免费9x9x人网站视频| 久久精品亚洲精品国产欧美kt∨| 国产一区二区女| 国产精品美女www爽爽爽| 99久久精品免费看国产| 亚洲精品乱码久久久久久| 欧美午夜电影一区| 男男视频亚洲欧美| 久久久久综合网| 99国产一区二区三精品乱码| 夜夜精品浪潮av一区二区三区| 欧美三级午夜理伦三级中视频| 日本欧美在线看| 久久亚洲春色中文字幕久久久| 国产成人小视频| 亚洲色欲色欲www在线观看| 欧美视频第二页| 精品一区二区三区香蕉蜜桃 | 午夜欧美电影在线观看| 日韩精品自拍偷拍| 国产成人精品免费| 亚洲女人的天堂| 欧美一区二区视频在线观看 | 欧美精品一级二级| 久久66热偷产精品| 亚洲丝袜自拍清纯另类| 337p亚洲精品色噜噜| 国产黄色精品网站| 一区二区三区**美女毛片| 欧美一区二区大片| 丁香六月久久综合狠狠色| 亚洲成a人v欧美综合天堂下载 | 成人av电影免费在线播放| 一区二区三区精品久久久| 欧美一区二区三区在线看| 高清shemale亚洲人妖| 夜夜亚洲天天久久| 久久久久9999亚洲精品| 色域天天综合网| 国产在线不卡视频| 亚洲精品中文在线影院| 26uuu另类欧美亚洲曰本| 色婷婷综合久色| 国内成人自拍视频| 性做久久久久久免费观看欧美| 欧美不卡一二三| 在线观看一区二区视频| 国产传媒日韩欧美成人| 日韩av中文在线观看| 国产精品白丝在线| 久久综合久久99| 欧美日韩激情在线| 波波电影院一区二区三区| 麻豆精品一区二区三区| 亚洲影院久久精品| 最新日韩av在线| 久久久青草青青国产亚洲免观| 欧美精品99久久久**|