聊天窗口编程怎么写

时间:2025-01-23 13:38:14 游戏攻略

创建一个聊天窗口程序可以使用多种编程语言和GUI库。以下是使用不同编程语言实现聊天窗口的步骤和示例代码:

使用Java和Swing

创建主窗口

```java

import javax.swing.*;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

public class Main {

public static void main(String[] args) {

JFrame chat = new JFrame("聊天窗口");

chat.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

chat.setSize(600, 400);

chat.setLocationRelativeTo(null);

JPanel chatPanel = new JPanel();

chatPanel.setLayout(new BorderLayout());

JTextArea chatArea = new JTextArea();

chatArea.setReadOnly(true);

JScrollPane scrollPane = new JScrollPane(chatArea);

chatPanel.add(scrollPane, BorderLayout.CENTER);

JButton sendButton = new JButton("发送");

sendButton.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

String message = chatArea.getText();

if (!message.isEmpty()) {

// 发送消息到服务器

// ...

chatArea.setText("");

}

}

});

chatPanel.add(sendButton, BorderLayout.SOUTH);

chat.add(chatPanel);

chat.setVisible(true);

}

}

```

使用Python和Tkinter

创建主窗口

```python

import tkinter as tk

from tkinter import scrolledtext

import socket

import threading

from datetime import datetime

def tcp_recv(sock):

while True:

try:

data = sock.recv(1024).decode("utf-8")

show_info(data)

except:

break

def send_func(sock):

while True:

message = send_msg.get("0.0", "end")

if message:

sock.send(message.encode("utf-8"))

show_info(message)

def show_info(message):

now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")

chat_area.insert(tk.END, f"{now}\n{message}\n")

chat_area.see(tk.END)

root = tk.Tk()

root.title("聊天窗口")

root.geometry("600x400")

chat_area = scrolledtext.ScrolledText(root, wrap=tk.WORD)

chat_area.pack(expand=1, fill=tk.BOTH)

send_msg = tk.StringVar()

send_button = tk.Button(root, text="发送", command=send_func)

send_button.pack()

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

sock.connect(("127.0.0.1", 12345))

recv_thread = threading.Thread(target=tcp_recv, args=(sock,))

recv_thread.daemon = True

recv_thread.start()

root.mainloop()

```

使用C和Windows Forms

创建主窗口