Java Swing实现:4输入框、下拉框与双按钮,开启TCP循环数据发送之旅
以下是一个使用 Java 的 Swing 库来实现您所描述的功能的示例代码: ```java import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.IOException; import java.io.OutputStream; import java.net.Socket; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; public class SwingTcpSender { private JFrame frame; private JTextField inputField1, inputField2, inputField3, inputField4; private JComboBox<String> comboBox; private JButton startButton, endButton; private Socket socket; private OutputStream outputStream; public SwingTcpSender() { initUI(); } private void initUI() { frame = new JFrame("TCP Sender"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel panel = new JPanel(); inputField1 = new JTextField(20); inputField2 = new JTextField(20); inputField3 = new JTextField(20); inputField4 = new JTextField(20); String[] options = {"Input Field 1", "Input Field 2", "Input Field 3", "Input Field 4"}; comboBox = new JComboBox<>(options); startButton = new JButton("Start"); startButton.addActionListener(new StartButtonListener()); endButton = new JButton("End"); panel.add(inputField1); panel.add(inputField2); panel.add(inputField3); panel.add(inputField4); panel.add(comboBox); panel.add(startButton); panel.add(endButton); frame.add(panel, BorderLayout.CENTER); frame.pack(); frame.setVisible(true); } class StartButtonListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { String selectedOption = (String) comboBox.getSelectedItem(); try { socket = new Socket("127.0.0.1", 8080); // 替换为您的目标 IP 和端口 outputStream = socket.getOutputStream(); if (selectedOption.equals("Input Field 1")) { startSending(inputField1); } else if (selectedOption.equals("Input Field 2")) { startSending(inputField2); } else if (selectedOption.equals("Input Field 3")) { startSending(inputField3); } else if (selectedOption.equals("Input Field 4")) { startSending(inputField4); } } catch (IOException ex) { JOptionPane.showMessageDialog(frame, "Error establishing TCP connection: " + ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE); } } private void startSending(final JTextField field) { new Thread(new Runnable() { @Override public void run() { while (true) { String text = field.getText(); try { outputStream.write(text.getBytes()); outputStream.flush(); Thread.sleep(5000); // 5 秒间隔发送 } catch (IOException | InterruptedException ex) { JOptionPane.showMessageDialog(frame, "Error sending data: " + ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE); break; } } } }).start(); } } public static void main(String[] args) { new SwingTcpSender(); } } ``` 此示例代码中的 TCP 连接地址和端口是硬编码的(`127.0.0.1` 和 `8080`),您需要根据实际情况进行修改。这只是一个简单的示例,实际应用中可能需要更多的错误处理和资源管理。 ######[AI写代码神器 | 901点数解答 | 2024-10-30 09:10:35]
- 探秘 ClientMain 类:Java 客户端代码解析(字节豆包 | 41点数解答 | 2024-11-15 18:00:17)251
- Java 实现复制粘贴功能:打造简易文本复制粘贴程序(GPT | 1497点数解答 | 2024-08-25 09:40:33)413
- Java JFrame 实现多界面跳转:含登录、注册及个人信息管理功能(讯飞星火 | 503点数解答 | 2024-06-06 23:49:29)399
- 超详细!用复杂 HTML 代码打造功能丰富网站,含特色搜索与展示(字节豆包 | 572点数解答 | 2024-11-17 07:58:26)265
- 解决数据库“dm.jdbc.driver.dmexception: 数据溢出”问题的全步骤指南(阿里通义 | 598点数解答 | 2024-10-15 15:48:38)314
- 达梦数据库数据溢出问题排查及多维度解决方法(阿里通义 | 403点数解答 | 2024-10-15 15:48:41)1169
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)350
- Java代码实现从JSON数据中提取ID,涉及“数据”与“项目 - 知识库”结构(字节豆包 | 603点数解答 | 2025-04-15 22:48:51)244
- C++ 实现:计算一排鹅与最高、最矮鹅的身高差及代码详解(字节豆包 | 549点数解答 | 2025-11-16 20:19:06)88
- 编程揭秘:计算 𝑛! 在 𝑃 进制下末尾零个数的方法与代码实现(DeepSeek | 549点数解答 | 2026-01-11 17:49:54)51
- Java 状态模式:模拟 TCP 连接多种状态及行为转换(GPT | 2147点数解答 | 2024-12-19 22:19:37)292
- Java实现状态模式:模拟TCP连接状态管理及行为处理(GPT | 1541点数解答 | 2024-12-19 22:19:57)281