好的,下面是一个简单的Java Swing GUI示例,包含4个输入框、一个下拉选择框、两个按钮(开始和结束),以及使用TCP发送选定输入框内容的逻辑。为了实现TCP发送和多个定时器,我们还需要一些额外的Java类库,比如`java.net`和`javax.swing.Timer`。 这个示例仅用于教学目的,并未包含完整的错误处理和资源管理逻辑。 1. 导入必要的类 ```java import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.net.Socket; import java.net.UnknownHostException; import java.io.PrintWriter; import java.io.IOException; import javax.swing.Timer; ``` 2. 创建主类并设置GUI ```java public class SwingTCPExample { private JFrame frame; private JTextField textField1; private JTextField textField2; private JTextField textField3; private JTextField textField4; private JComboBox<String> comboBox; private JButton startButton; private JButton stopButton; private Timer timer1; private Timer timer2; private Timer timer3; private Timer timer4; private PrintWriter out; private Socket socket; private String selectedField; public SwingTCPExample() { // 初始化组件 frame = new JFrame("Swing TCP Example"); textField1 = new JTextField(20); textField2 = new JTextField(20); textField3 = new JTextField(20); textField4 = new JTextField(20); comboBox = new JComboBox<>(new String[]{"TextField1", "TextField2", "TextField3", "TextField4"}); startButton = new JButton("Start"); stopButton = new JButton("Stop"); // 设置布局 frame.setLayout(new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); gbc.insets = new Insets(5, 5, 5, 5); gbc.gridx = 0; gbc.gridy = 0; frame.add(new JLabel("Field 1:"), gbc); gbc.gridx = 1; frame.add(textField1, gbc); gbc.gridx = 0; gbc.gridy = 1; frame.add(new JLabel("Field 2:"), gbc); gbc.gridx = 1; frame.add(textField2, gbc); gbc.gridx = 0; gbc.gridy = 2; frame.add(new JLabel("Field 3:"), gbc); gbc.gridx = 1; frame.add(textField3, gbc); gbc.gridx = 0; gbc.gridy = 3; frame.add(new JLabel("Field 4:"), gbc); gbc.gridx = 1; frame.add(textField4, gbc); gbc.gridx = 0; gbc.gridy = 4; gbc.gridwidth = 2; frame.add(comboBox, gbc); gbc.gridx = 0; gbc.gridy = 5; gbc.gridwidth = 1; frame.add(startButton, gbc); gbc.gridx = 1; frame.add(stopButton, gbc); // 设置按钮事件 startButton.addActionListener(new StartButtonListener()); stopButton.addActionListener(new StopButtonListener()); // 设置下拉框事件 comboBox.addActionListener(e -> selectedField = (String) comboBox.getSelectedItem()); // 设置窗口属性 frame.pack(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } // 开始按钮的事件监听器 private class StartButtonListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { String host = "localhost"; // TCP服务器地址 int port = 12345; // TCP服务器端口 try { socket = new Socket(host, port); out = new PrintWriter(socket.getOutputStream(), true); } catch (UnknownHostException | IOException ex) { ex.printStackTrace(); JOptionPane.showMessageDialog(frame, "Error connecting to server", "Error", JOptionPane.ERROR_MESSAGE); return; [2024-10-30 09:14:18 | AI写代码神器 | 1020点数解答]