From 8d662de2fd262b3a485f16e197cb4d0ca2a61cdf Mon Sep 17 00:00:00 2001
From: zsh_root <979909237@qq.com>
Date: 星期三, 10 十二月 2025 17:03:47 +0800
Subject: [PATCH] 发布版V1.0

---
 src/home/SendPanel.java |  170 ++++++++++++++++++++++++++++----------------------------
 1 files changed, 85 insertions(+), 85 deletions(-)

diff --git a/src/home/SendPanel.java b/src/home/SendPanel.java
index c6a4c5e..d48949c 100644
--- a/src/home/SendPanel.java
+++ b/src/home/SendPanel.java
@@ -16,9 +16,9 @@
     private JCheckBox hexSendCheck, loopSendCheck;
     private JTextField loopTimeField;
     private JButton sendBtn, extensionBtn;
-    private JLabel loopTimeLabel; // 添加循环时间标签引用
-    private JLabel addressLabel; // 添加地址标签引用
-    private JTextField addressField; // 添加地址文本框引用
+    private JLabel loopTimeLabel; // 娣诲姞寰幆鏃堕棿鏍囩寮曠敤
+    private JLabel addressLabel; // 娣诲姞鍦板潃鏍囩寮曠敤
+    private JTextField addressField; // 娣诲姞鍦板潃鏂囨湰妗嗗紩鐢�
     
     public SendPanel(MainFrame mainFrame) {
         this.mainFrame = mainFrame;
@@ -26,19 +26,19 @@
     }
     
     private void initializeUI() {
-        setLayout(new BorderLayout()); // 设置边界布局
-        setBorder(BorderFactory.createTitledBorder(getString("send.data"))); // 设置带标题的边框
+        setLayout(new BorderLayout()); // 璁剧疆杈圭晫甯冨眬
+        setBorder(BorderFactory.createTitledBorder(getString("send.data"))); // 璁剧疆甯︽爣棰樼殑杈规
         
-        // 创建顶部控制面板
-        JPanel topControlPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); // 顶部控制面板,左对齐流式布局
-        hexSendCheck = new JCheckBox(getString("hex.send")); // HEX发送复选框
-        loopSendCheck = new JCheckBox(getString("loop.send")); // 循环发送复选框
-        loopTimeLabel = new JLabel(getString("loop.time")); // 循环时间标签
-        loopTimeField = new JTextField(8); // 循环时间文本框
-        loopTimeField.setText("1000"); // 设置默认循环时间
-        extensionBtn = ButtonUtils.createBlueButton(getString("extension"), 25); // 扩展按钮,高度25像素
-        extensionBtn.setPreferredSize(new Dimension(80, 25)); // 设置按钮宽度为120,高度25
-        // 在 SendPanel 的 initializeUI() 方法中,创建 extensionBtn 后添加:
+        // 鍒涘缓椤堕儴鎺у埗闈㈡澘
+        JPanel topControlPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); // 椤堕儴鎺у埗闈㈡澘锛屽乏瀵归綈娴佸紡甯冨眬
+        hexSendCheck = new JCheckBox(getString("hex.send")); // HEX鍙戦�佸閫夋
+        loopSendCheck = new JCheckBox(getString("loop.send")); // 寰幆鍙戦�佸閫夋
+        loopTimeLabel = new JLabel(getString("loop.time")); // 寰幆鏃堕棿鏍囩
+        loopTimeField = new JTextField(8); // 寰幆鏃堕棿鏂囨湰妗�
+        loopTimeField.setText("1000"); // 璁剧疆榛樿寰幆鏃堕棿
+        extensionBtn = ButtonUtils.createBlueButton(getString("extension"), 25); // 鎵╁睍鎸夐挳锛岄珮搴�25鍍忕礌
+        extensionBtn.setPreferredSize(new Dimension(80, 25)); // 璁剧疆鎸夐挳瀹藉害涓�120锛岄珮搴�25
+        // 鍦� SendPanel 鐨� initializeUI() 鏂规硶涓紝鍒涘缓 extensionBtn 鍚庢坊鍔狅細
         extensionBtn.addActionListener(new ActionListener() {
             @Override
             public void actionPerformed(ActionEvent e) {
@@ -46,31 +46,31 @@
                 extensionPanel.setVisible(true);
             }
         });
-        topControlPanel.add(hexSendCheck); // 添加HEX发送复选框
-        topControlPanel.add(loopSendCheck); // 添加循环发送复选框
-        topControlPanel.add(loopTimeLabel); // 添加循环时间标签
-        topControlPanel.add(loopTimeField); // 添加循环时间文本框
-        topControlPanel.add(extensionBtn); // 添加扩展按钮
+        topControlPanel.add(hexSendCheck); // 娣诲姞HEX鍙戦�佸閫夋
+        topControlPanel.add(loopSendCheck); // 娣诲姞寰幆鍙戦�佸閫夋
+        topControlPanel.add(loopTimeLabel); // 娣诲姞寰幆鏃堕棿鏍囩
+        topControlPanel.add(loopTimeField); // 娣诲姞寰幆鏃堕棿鏂囨湰妗�
+        topControlPanel.add(extensionBtn); // 娣诲姞鎵╁睍鎸夐挳
         
-        // 创建中部控制面板(指定地址发送)
-        JPanel middleControlPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); // 中部控制面板,左对齐流式布局
-        addressLabel = new JLabel(getString("specified.address")); // 指定地址标签
-        addressField = new JTextField(30); // 指定地址文本框
-        middleControlPanel.add(addressLabel); // 添加指定地址标签
-        middleControlPanel.add(addressField); // 添加指定地址文本框
+        // 鍒涘缓涓儴鎺у埗闈㈡澘锛堟寚瀹氬湴鍧�鍙戦�侊級
+        JPanel middleControlPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); // 涓儴鎺у埗闈㈡澘锛屽乏瀵归綈娴佸紡甯冨眬
+        addressLabel = new JLabel(getString("specified.address")); // 鎸囧畾鍦板潃鏍囩
+        addressField = new JTextField(30); // 鎸囧畾鍦板潃鏂囨湰妗�
+        middleControlPanel.add(addressLabel); // 娣诲姞鎸囧畾鍦板潃鏍囩
+        middleControlPanel.add(addressField); // 娣诲姞鎸囧畾鍦板潃鏂囨湰妗�
         
-        // 创建发送区域面板
-        JPanel sendAreaPanel = new JPanel(new BorderLayout()); // 发送区域面板,边界布局
-        sendArea = new JTextArea(3, 25); // 发送文本区域
-        JScrollPane scrollPane = new JScrollPane(sendArea); // 发送区域滚动面板
-        sendAreaPanel.add(scrollPane, BorderLayout.CENTER); // 添加滚动面板到中心
+        // 鍒涘缓鍙戦�佸尯鍩熼潰鏉�
+        JPanel sendAreaPanel = new JPanel(new BorderLayout()); // 鍙戦�佸尯鍩熼潰鏉匡紝杈圭晫甯冨眬
+        sendArea = new JTextArea(3, 25); // 鍙戦�佹枃鏈尯鍩�
+        JScrollPane scrollPane = new JScrollPane(sendArea); // 鍙戦�佸尯鍩熸粴鍔ㄩ潰鏉�
+        sendAreaPanel.add(scrollPane, BorderLayout.CENTER); // 娣诲姞婊氬姩闈㈡澘鍒颁腑蹇�
         
-        // 创建底部控制面板(发送按钮)
-        JPanel bottomControlPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); // 底部控制面板,左对齐流式布局
-        sendBtn = ButtonUtils.createBlueButton(getString("send"), 25); // 发送按钮,高度25像素
-        sendBtn.setPreferredSize(new Dimension(100, 25)); // 设置按钮宽度为120,高度25
+        // 鍒涘缓搴曢儴鎺у埗闈㈡澘锛堝彂閫佹寜閽級
+        JPanel bottomControlPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); // 搴曢儴鎺у埗闈㈡澘锛屽乏瀵归綈娴佸紡甯冨眬
+        sendBtn = ButtonUtils.createBlueButton(getString("send"), 25); // 鍙戦�佹寜閽紝楂樺害25鍍忕礌
+        sendBtn.setPreferredSize(new Dimension(100, 25)); // 璁剧疆鎸夐挳瀹藉害涓�120锛岄珮搴�25
         
-        // 添加发送按钮点击事件
+        // 娣诲姞鍙戦�佹寜閽偣鍑讳簨浠�
         sendBtn.addActionListener(new ActionListener() {
             @Override
             public void actionPerformed(ActionEvent e) {
@@ -78,22 +78,22 @@
             }
         });
         
-        bottomControlPanel.add(sendBtn); // 添加发送按钮
+        bottomControlPanel.add(sendBtn); // 娣诲姞鍙戦�佹寜閽�
         
-        // 创建主面板,使用垂直盒子布局
+        // 鍒涘缓涓婚潰鏉匡紝浣跨敤鍨傜洿鐩掑瓙甯冨眬
         JPanel mainPanel = new JPanel();
-        mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS)); // 垂直盒子布局
+        mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS)); // 鍨傜洿鐩掑瓙甯冨眬
         
-        mainPanel.add(topControlPanel); // 添加顶部控制面板
-        mainPanel.add(middleControlPanel); // 添加中部控制面板
-        mainPanel.add(sendAreaPanel); // 添加发送区域面板
-        mainPanel.add(bottomControlPanel); // 添加底部控制面板
+        mainPanel.add(topControlPanel); // 娣诲姞椤堕儴鎺у埗闈㈡澘
+        mainPanel.add(middleControlPanel); // 娣诲姞涓儴鎺у埗闈㈡澘
+        mainPanel.add(sendAreaPanel); // 娣诲姞鍙戦�佸尯鍩熼潰鏉�
+        mainPanel.add(bottomControlPanel); // 娣诲姞搴曢儴鎺у埗闈㈡澘
         
-        add(mainPanel, BorderLayout.CENTER); // 添加主面板到中心
+        add(mainPanel, BorderLayout.CENTER); // 娣诲姞涓婚潰鏉垮埌涓績
     }
     
     /**
-     * 发送数据并在数据日志中显示
+     * 鍙戦�佹暟鎹苟鍦ㄦ暟鎹棩蹇椾腑鏄剧ず
      */
     private void sendData() {
         String sendContent = sendArea.getText().trim();
@@ -105,26 +105,26 @@
             return;
         }
         
-        // 获取当前时间
+        // 鑾峰彇褰撳墠鏃堕棿
         SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         String currentTime = dateFormat.format(new Date());
         
-        // 构建日志信息
+        // 鏋勫缓鏃ュ織淇℃伅
         StringBuilder logMessage = new StringBuilder();
         logMessage.append("[").append(currentTime).append("] ");
         logMessage.append(getString("send")).append(": ");
         
-        // 根据HEX发送选项格式化内容
+        // 鏍规嵁HEX鍙戦�侀�夐」鏍煎紡鍖栧唴瀹�
         if (hexSendCheck.isSelected()) {
             logMessage.append("HEX ");
-            // 这里可以添加HEX格式转换逻辑
+            // 杩欓噷鍙互娣诲姞HEX鏍煎紡杞崲閫昏緫
             logMessage.append(sendContent);
         } else {
             logMessage.append("ASCII ");
             logMessage.append(sendContent);
         }
         
-        // 如果有指定地址,添加到日志中
+        // 濡傛灉鏈夋寚瀹氬湴鍧�锛屾坊鍔犲埌鏃ュ織涓�
         String address = addressField.getText().trim();
         if (!address.isEmpty()) {
             logMessage.append(" [").append(getString("specified.address")).append(": ").append(address).append("]");
@@ -132,108 +132,108 @@
         
         logMessage.append("\n");
         
-        // 将发送信息添加到数据日志面板
+        // 灏嗗彂閫佷俊鎭坊鍔犲埌鏁版嵁鏃ュ織闈㈡澘
         DataLogPanel dataLogPanel = mainFrame.getDataLogPanel();
         if (dataLogPanel != null) {
-            // 通过反射或其他方式访问DataLogPanel的logArea
-            // 这里假设DataLogPanel有添加日志的方法
+            // 閫氳繃鍙嶅皠鎴栧叾浠栨柟寮忚闂瓺ataLogPanel鐨刲ogArea
+            // 杩欓噷鍋囪DataLogPanel鏈夋坊鍔犳棩蹇楃殑鏂规硶
             addLogToDataLogPanel(dataLogPanel, logMessage.toString());
         }
         
-        // 这里可以添加实际的发送逻辑
+        // 杩欓噷鍙互娣诲姞瀹為檯鐨勫彂閫侀�昏緫
         
     }
     
     /**
-     * 将日志信息添加到数据日志面板
-     * @param dataLogPanel 数据日志面板
-     * @param logMessage 日志信息
+     * 灏嗘棩蹇椾俊鎭坊鍔犲埌鏁版嵁鏃ュ織闈㈡澘
+     * @param dataLogPanel 鏁版嵁鏃ュ織闈㈡澘
+     * @param logMessage 鏃ュ織淇℃伅
      */
     private void addLogToDataLogPanel(DataLogPanel dataLogPanel, String logMessage) {
         try {
-            // 使用反射获取logArea并添加日志
+            // 浣跨敤鍙嶅皠鑾峰彇logArea骞舵坊鍔犳棩蹇�
             java.lang.reflect.Field logAreaField = DataLogPanel.class.getDeclaredField("logArea");
             logAreaField.setAccessible(true);
             JTextArea logArea = (JTextArea) logAreaField.get(dataLogPanel);
             
             if (logArea != null) {
                 logArea.append(logMessage);
-                // 自动滚动到最后
+                // 鑷姩婊氬姩鍒版渶鍚�
                 logArea.setCaretPosition(logArea.getDocument().getLength());
             }
         } catch (Exception ex) {
-            // 如果反射失败,尝试其他方式
-            System.err.println("无法访问数据日志区域: " + ex.getMessage());
-            // 这里可以添加备用方案
+            // 濡傛灉鍙嶅皠澶辫触锛屽皾璇曞叾浠栨柟寮�
+            System.err.println("鏃犳硶璁块棶鏁版嵁鏃ュ織鍖哄煙: " + ex.getMessage());
+            // 杩欓噷鍙互娣诲姞澶囩敤鏂规
         }
     }
     
     public void updateLanguage() {
-        setBorder(BorderFactory.createTitledBorder(getString("send.data"))); // 更新边框标题
-        hexSendCheck.setText(getString("hex.send")); // 更新HEX发送复选框文本
-        loopSendCheck.setText(getString("loop.send")); // 更新循环发送复选框文本
-        sendBtn.setText(getString("send")); // 更新发送按钮文本
-        extensionBtn.setText(getString("extension")); // 更新扩展按钮文本
+        setBorder(BorderFactory.createTitledBorder(getString("send.data"))); // 鏇存柊杈规鏍囬
+        hexSendCheck.setText(getString("hex.send")); // 鏇存柊HEX鍙戦�佸閫夋鏂囨湰
+        loopSendCheck.setText(getString("loop.send")); // 鏇存柊寰幆鍙戦�佸閫夋鏂囨湰
+        sendBtn.setText(getString("send")); // 鏇存柊鍙戦�佹寜閽枃鏈�
+        extensionBtn.setText(getString("extension")); // 鏇存柊鎵╁睍鎸夐挳鏂囨湰
         
-        // 直接更新标签文本,无需遍历查找
+        // 鐩存帴鏇存柊鏍囩鏂囨湰锛屾棤闇�閬嶅巻鏌ユ壘
         if (loopTimeLabel != null) {
-            loopTimeLabel.setText(getString("loop.time")); // 更新循环时间标签文本
+            loopTimeLabel.setText(getString("loop.time")); // 鏇存柊寰幆鏃堕棿鏍囩鏂囨湰
         }
         
-        // 更新指定地址标签
+        // 鏇存柊鎸囧畾鍦板潃鏍囩
         if (addressLabel != null) {
-            addressLabel.setText(getString("specified.address")); // 更新指定地址标签文本
+            addressLabel.setText(getString("specified.address")); // 鏇存柊鎸囧畾鍦板潃鏍囩鏂囨湰
         }
         
-        revalidate(); // 重新验证布局
-        repaint(); // 重新绘制
+        revalidate(); // 閲嶆柊楠岃瘉甯冨眬
+        repaint(); // 閲嶆柊缁樺埗
     }
     
     private String getString(String key) {
-        return mainFrame.getString(key); // 从主框架获取字符串
+        return mainFrame.getString(key); // 浠庝富妗嗘灦鑾峰彇瀛楃涓�
     }
     
     /**
-     * 获取发送区域内容
-     * @return 发送内容
+     * 鑾峰彇鍙戦�佸尯鍩熷唴瀹�
+     * @return 鍙戦�佸唴瀹�
      */
     public String getSendContent() {
         return sendArea.getText();
     }
     
     /**
-     * 设置发送区域内容
-     * @param content 发送内容
+     * 璁剧疆鍙戦�佸尯鍩熷唴瀹�
+     * @param content 鍙戦�佸唴瀹�
      */
     public void setSendContent(String content) {
         sendArea.setText(content);
     }
     
     /**
-     * 获取HEX发送状态
-     * @return 是否HEX发送
+     * 鑾峰彇HEX鍙戦�佺姸鎬�
+     * @return 鏄惁HEX鍙戦��
      */
     public boolean isHexSend() {
         return hexSendCheck.isSelected();
     }
     
     /**
-     * 获取循环发送状态
-     * @return 是否循环发送
+     * 鑾峰彇寰幆鍙戦�佺姸鎬�
+     * @return 鏄惁寰幆鍙戦��
      */
     public boolean isLoopSend() {
         return loopSendCheck.isSelected();
     }
     
     /**
-     * 获取循环时间
-     * @return 循环时间(毫秒)
+     * 鑾峰彇寰幆鏃堕棿
+     * @return 寰幆鏃堕棿锛堟绉掞級
      */
     public int getLoopTime() {
         try {
             return Integer.parseInt(loopTimeField.getText());
         } catch (NumberFormatException e) {
-            return 1000; // 默认1秒
+            return 1000; // 榛樿1绉�
         }
     }
 }
\ No newline at end of file

--
Gitblit v1.10.0