用java写一个基于GUI编程技术、I/O流技术、多线程技术、网络编程技术的示例代码
时间: 2023-08-12 21:05:37 浏览: 57
好的,下面是一个基于GUI编程技术、I/O流技术、多线程技术、网络编程技术的示例代码,它可以实现一个简单的聊天程序:
```
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class ChatClient extends JFrame implements ActionListener, Runnable {
private static final long serialVersionUID = 1L;
private JTextArea chatArea;
private JTextField chatInput;
private JButton sendBtn;
private PrintWriter out;
private BufferedReader in;
public ChatClient() {
super("Chat Client");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400, 300);
setLayout(new BorderLayout());
chatArea = new JTextArea();
chatArea.setEditable(false);
add(chatArea, BorderLayout.CENTER);
JPanel bottomPanel = new JPanel();
bottomPanel.setLayout(new BorderLayout());
chatInput = new JTextField();
bottomPanel.add(chatInput, BorderLayout.CENTER);
sendBtn = new JButton("Send");
sendBtn.addActionListener(this);
bottomPanel.add(sendBtn, BorderLayout.EAST);
add(bottomPanel, BorderLayout.SOUTH);
setVisible(true);
try {
Socket socket = new Socket("localhost", 8888);
out = new PrintWriter(socket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
new Thread(this).start();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new ChatClient();
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == sendBtn) {
String input = chatInput.getText();
out.println(input);
chatInput.setText("");
}
}
@Override
public void run() {
try {
while (true) {
String msg = in.readLine();
chatArea.append(msg + "\n");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
这个程序实现了一个简单的聊天客户端,它使用了Java Swing库进行GUI设计,使用了Socket进行网络通信,使用了多线程技术实现了异步消息接收,使用了I/O流技术进行数据的读写。在程序运行时,它会连接到一个本地的服务器端,然后可以通过输入框向服务器端发送消息,服务器端会收到这些消息并原样返回,客户端会将这些消息显示在聊天窗口中。
希望这个示例代码对您有所帮助!