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