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

📄 multichatclient.java

📁 多人聊天
💻 JAVA
字号:
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
 
// 視窗介面
public class MultiChatClient extends Frame {
    private Button clientBtn, serverBtn;
    private TextArea textArea;
    private TextField tfAddress, tfPort, tfType;
    private ChatClientSocket clientSkt;  // 客戶端連線處理執行緒
 
    public MultiChatClient() {
        clientBtn = new Button("Connect");
        textArea = new TextArea("", 10, 50, TextArea.SCROLLBARS_BOTH);
        tfAddress = new TextField("localhost");  // IP欄位
        tfPort = new TextField("port");  // 連接埠欄位
        tfType = new TextField(50);   // 文字輸入欄位
 
        tfType.addKeyListener(new TFListener()); // 註冊事件
        textArea.setEditable(false);
 
        setLayout(new FlowLayout());  // 版面配置
        add(tfAddress);
        add(tfPort);
        add(clientBtn);
        add(textArea);
        add(tfType);
        setSize(400, 300);
        setTitle("MultiChatClient");
 
        // 按下「Connect」按鈕的事件處理
        clientBtn.addActionListener(
            new ActionListener() {  // 匿名類別
                public void actionPerformed(ActionEvent e) {
                    setClient();
                }
            }
        );
 
        addWindowListener(  // 按下關閉鈕時結束
            new WindowAdapter() {
                public void windowClosing(WindowEvent e) {
                    System.exit(0);
                }
            }
        );
        show();
    }
 
    public void setGUIState(boolean state) {
        tfAddress.setEnabled(state);
        tfPort.setEnabled(state);
        clientBtn.setEnabled(state);
    }
 
    // 取得訊息並顯示在GUI上
    public void update() {
            textArea.append(clientSkt.getMessage());
    }
 
    public static void main(String args[]) {
        MultiChatClient frm = new MultiChatClient();
    }
 
    // 設定客戶端
    private void setClient() {
        // 取得指定的IP與連接埠
        int port = Integer.parseInt(tfPort.getText());
        // 建立客戶端連線執行緒
        clientSkt = new ChatClientSocket(tfAddress.getText(), port);
        clientSkt.setMessageObserver(this);
        // 啟動執行緒進行連線
        clientSkt.start();
    }
 
    // 事件處理
    private class TFListener implements KeyListener {
        public void keyPressed(KeyEvent e) {}
        public void keyTyped(KeyEvent e) {}
        public void keyReleased(KeyEvent e) {
            // 如果按下的是「Enter」鍵
            if(e.getKeyCode() == KeyEvent.VK_ENTER) {
                // 將資料透過連線執行緒送出
                clientSkt.dataOutput(tfType.getText());
                // 清除下方文字欄位內容
                tfType.setText("");
            }
        }       
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -