欢迎回来,代码忍者们!在上一集的魔法世界中,我们成为了代码的探险家,掌握了文件I/O和序列化的神秘力量。今天,我们要继续我们的冒险之旅,深入到Java网络编程和多线程图形用户界面(GUI)的魔法领域。准备好了吗?让我们穿上我们的斗篷,拿起魔杖,一起进入网络编程和GUI的世界吧!
- 网络编程——信息的传递者 网络编程就像是信息的传递者,它允许我们的应用程序通过网络发送和接收数据。通过使用Socket类和ServerSocket类,我们可以创建客户端和服务器:
- 创建服务器:
try (ServerSocket serverSocket = new ServerSocket(8080)) {
while (true) {
try (Socket clientSocket = serverSocket.accept();
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()))) {
String inputLine;
while ((inputLine = in.readLine()) != null) {
System.out.println("Client: " + inputLine);
out.println("Server: " + inputLine);
}
} catch (IOException e) {
e.printStackTrace();
}
}
} catch (IOException e) {
e.printStackTrace();
}
- 创建客户端:
try (Socket socket = new Socket("localhost", 8080);
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()))) {
out.println("Hello, Server!");
String response;
while ((response = in.readLine()) != null) {
System.out.println("Server: " + response);
}
} catch (IOException e) {
e.printStackTrace();
}
- GUI编程——界面的创造者 GUI编程就像是界面的创造者,它允许我们创建具有图形界面的应用程序。通过使用Swing库,我们可以创建窗口、按钮、文本框等GUI组件:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Calculator extends JFrame {
private JTextField textField;
private JButton addButton, subtractButton, multiplyButton, divideButton;
private JLabel resultLabel;
public Calculator() {
setTitle("Calculator");
setLayout(new FlowLayout());
textField = new JTextField(10);
addButton = new JButton("+");
subtractButton = new JButton("-");
multiplyButton = new JButton("*");
divideButton = new JButton("/");
resultLabel = new JLabel("Result: ");
addButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int result = Integer.parseInt(textField.getText()) + Integer.parseInt(textField.getText());
resultLabel.setText("Result: " + result);
}
});
add(textField);
add(addButton);
add(subtractButton);
add(multiplyButton);
add(divideButton);
add(resultLabel);
setSize(300, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new Calculator();
}
});
}
}
- 总结——成为代码世界的全能大师 今天的课程里,我们就像是在学习如何成为代码世界的全能大师,探索了Java的网络编程和GUI编程。这些技能将使我们能够构建更加丰富和多样化的应用程序。在下一节课程中,我们将解锁更多的Java秘籍,准备好迎接更多挑战了吗?让我们继续前进,深入Java的高级话题,成为真正的代码世界全能大师!