package home; import javax.swing.*; import PublicPannel.AntiCollisionPanel; import PublicPannel.BaseParameterPanel; import PublicPannel.BaseStationPanel; import PublicPannel.TagPanel; import PublicPannel.UpgradePanel; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class NetworkCommunicationPanel extends JPanel { /** * */ private static final long serialVersionUID = 1L; private MainFrame mainFrame; private JComboBox protocolCombo; private JTextField hostAddressField, portField; private JLabel hostLabel, portLabel; private JButton openBtn; private JTabbedPane rightTabbedPane; private BaseParameterPanel baseParamPanel; private BaseStationPanel baseStationPanel; private TagPanel tagPanel; private AntiCollisionPanel antiCollisionPanel; private UpgradePanel upgradePanel; private JButton readParamsBtn, saveParamsBtn, restartDeviceBtn, resetFactoryBtn; private boolean isOpen = false; public NetworkCommunicationPanel(MainFrame mainFrame) { this.mainFrame = mainFrame; initializeUI(); } private void initializeUI() { setLayout(new BorderLayout()); // ¿ØÖÆÃæ°å add(createControlPanel(), BorderLayout.NORTH); // Ö÷·Ö¸îÃæ°å - ʹÓÃˮƽ·Ö¸î JSplitPane mainSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); mainSplitPane.setDividerLocation(320); // »ù´¡²ÎÊýÃæ°å JPanel leftPanel = createBaseParameterPanel(); // ÓҲ๦ÄÜÃæ°å JPanel rightPanel = createRightPanel(); rightPanel.setBorder(null); // ÒÆ³ýÃæ°å±ß¿ò mainSplitPane.setLeftComponent(leftPanel); mainSplitPane.setRightComponent(rightPanel); add(mainSplitPane, BorderLayout.CENTER); // µ×²¿°´Å¥Ãæ°å add(createBottomButtonPanel(), BorderLayout.SOUTH); } private JPanel createControlPanel() { JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEFT)); panel.add(new JLabel(getString("protocol.type"))); protocolCombo = new JComboBox<>(new String[]{"UDP", "TCP Client", "TCP Server"}); protocolCombo.addActionListener(new ProtocolChangeListener()); panel.add(protocolCombo); hostLabel = new JLabel(getString("local.host.address")); panel.add(hostLabel); hostAddressField = new JTextField(15); panel.add(hostAddressField); portLabel = new JLabel(getString("local.host.port")); panel.add(portLabel); portField = new JTextField(8); panel.add(portField); // ʹÓÃButtonUtils´´½¨À¶É«Ñùʽ°´Å¥ openBtn = ButtonUtils.createBlueButton(getString("open")); openBtn.addActionListener(e -> toggleConnection()); panel.add(openBtn); return panel; } private void toggleConnection() { isOpen = !isOpen; openBtn.setText(isOpen ? getString("close") : getString("open")); } private JPanel createBaseParameterPanel() { JPanel panel = new JPanel(new BorderLayout()); baseParamPanel = new BaseParameterPanel(mainFrame); panel.add(baseParamPanel, BorderLayout.CENTER); return panel; } private JPanel createRightPanel() { JPanel panel = new JPanel(new BorderLayout()); panel.setBorder(null); // ÒÆ³ýÃæ°å±ß¿ò // ÓÒ²àÑ¡Ï rightTabbedPane = new JTabbedPane(); // ´´½¨¸÷¸ö¹¦ÄÜÃæ°å baseStationPanel = new BaseStationPanel(mainFrame); tagPanel = new TagPanel(mainFrame); antiCollisionPanel = new AntiCollisionPanel(mainFrame); upgradePanel = new UpgradePanel(mainFrame); rightTabbedPane.addTab(getString("base.station"), baseStationPanel); rightTabbedPane.addTab(getString("tag"), tagPanel); rightTabbedPane.addTab(getString("anti.collision"), antiCollisionPanel); rightTabbedPane.addTab(getString("upgrade"), upgradePanel); panel.add(rightTabbedPane, BorderLayout.CENTER); return panel; } private JPanel createBottomButtonPanel() { JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEFT)); // ʹÓÃButtonUtils´´½¨À¶É«Ñùʽ°´Å¥ readParamsBtn = ButtonUtils.createBlueButton(getString("read.parameters")); saveParamsBtn = ButtonUtils.createBlueButton(getString("save.parameters")); restartDeviceBtn = ButtonUtils.createBlueButton(getString("restart.device")); resetFactoryBtn = ButtonUtils.createBlueButton(getString("reset.factory")); panel.add(readParamsBtn); panel.add(saveParamsBtn); panel.add(restartDeviceBtn); panel.add(resetFactoryBtn); return panel; } public void updateLanguage() { // ¸üпØÖÆÃæ°åÎı¾ openBtn.setText(isOpen ? getString("close") : getString("open")); readParamsBtn.setText(getString("read.parameters")); saveParamsBtn.setText(getString("save.parameters")); restartDeviceBtn.setText(getString("restart.device")); resetFactoryBtn.setText(getString("reset.factory")); // ¸üÐÂÖ÷»ú±êÇ©ºÍ¶Ë¿Ú±êÇ© hostLabel.setText(getString("local.host.address")); portLabel.setText(getString("local.host.port")); // ¸üÐÂЭÒéÑ¡Ôñ protocolCombo.removeAllItems(); protocolCombo.addItem("UDP"); protocolCombo.addItem("TCP Client"); protocolCombo.addItem("TCP Server"); // ¸üÐÂÑ¡Ï±êÌâ if (rightTabbedPane != null) { rightTabbedPane.setTitleAt(0, getString("base.station")); rightTabbedPane.setTitleAt(1, getString("tag")); rightTabbedPane.setTitleAt(2, getString("anti.collision")); rightTabbedPane.setTitleAt(3, getString("upgrade")); } // ¸üи÷¸ö¹¦ÄÜÃæ°åµÄÓïÑÔ baseParamPanel.updateLanguage(); baseStationPanel.updateLanguage(); tagPanel.updateLanguage(); antiCollisionPanel.updateLanguage(); upgradePanel.updateLanguage(); revalidate(); repaint(); } private class ProtocolChangeListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { String protocol = (String) protocolCombo.getSelectedItem(); // Ìí¼Ó¿ÕÖµ¼ì²é if (protocol == null) { return; } switch (protocol) { case "UDP": hostLabel.setText(getString("local.host.address")); portLabel.setText(getString("local.host.port")); break; case "TCP Client": hostLabel.setText(getString("remote.host.address")); portLabel.setText(getString("remote.host.port")); break; case "TCP Server": hostLabel.setText(getString("local.host.address")); portLabel.setText(getString("local.host.port")); break; } } } private String getString(String key) { return mainFrame.getString(key); } }