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/QuickCalculationPanel.java | 304 +++++++++++++++++++++++++-------------------------
1 files changed, 152 insertions(+), 152 deletions(-)
diff --git a/src/home/QuickCalculationPanel.java b/src/home/QuickCalculationPanel.java
index dc646bf..a5d6479 100644
--- a/src/home/QuickCalculationPanel.java
+++ b/src/home/QuickCalculationPanel.java
@@ -21,7 +21,7 @@
private JTextField result1TextField;
private JTextField result2TextField;
- // 构造函数
+ // 鏋勯�犲嚱鏁�
public QuickCalculationPanel(ResourceBundle messages) {
this.messages = messages;
setLayout(new BorderLayout());
@@ -30,14 +30,14 @@
initUI();
}
- // 初始化用户界面
+ // 鍒濆鍖栫敤鎴风晫闈�
private void initUI() {
JPanel mainPanel = new JPanel();
mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));
mainPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
mainPanel.setBackground(Color.WHITE);
- // 创建带标题边框的面板
+ // 鍒涘缓甯︽爣棰樿竟妗嗙殑闈㈡澘
mainPanel.add(createPointInputPanel());
mainPanel.add(Box.createVerticalStrut(10));
mainPanel.add(createCoordinateConversionPanel());
@@ -52,121 +52,121 @@
}
/**
- * 创建点输入面板
+ * 鍒涘缓鐐硅緭鍏ラ潰鏉�
*/
private JPanel createPointInputPanel() {
- JPanel panel = createTitledPanel(getMessage("POINT_INPUT_SECTION", "点输入区域"));
+ JPanel panel = createTitledPanel(getMessage("POINT_INPUT_SECTION", "鐐硅緭鍏ュ尯鍩�"));
panel.setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.HORIZONTAL;
- gbc.insets = new Insets(5, 5, 5, 5); // 设置组件间距为5像素
+ gbc.insets = new Insets(5, 5, 5, 5); // 璁剧疆缁勪欢闂磋窛涓�5鍍忕礌
- // 点A输入
+ // 鐐笰杈撳叆
gbc.gridx = 0;
gbc.gridy = 0;
gbc.weightx = 0;
- JLabel pointALabel = new JLabel(getMessage("POINT_A", "点A") + ":");
+ JLabel pointALabel = new JLabel(getMessage("POINT_A", "鐐笰") + ":");
panel.add(pointALabel, gbc);
gbc.gridx = 1;
gbc.weightx = 1.0;
pointATextField = new JTextField();
- pointATextField.setPreferredSize(new Dimension(200, 25)); // 设置文本框长度为300像素
- pointATextField.setToolTipText(getMessage("POINT_A1", "格式: 经度,纬度,本地X,本地Y"));
+ pointATextField.setPreferredSize(new Dimension(200, 25)); // 璁剧疆鏂囨湰妗嗛暱搴︿负300鍍忕礌
+ pointATextField.setToolTipText(getMessage("POINT_A1", "鏍煎紡: 缁忓害,绾害,鏈湴X,鏈湴Y"));
panel.add(pointATextField, gbc);
- // 点B输入
+ // 鐐笲杈撳叆
gbc.gridx = 0;
gbc.gridy = 1;
gbc.weightx = 0;
- JLabel pointBLabel = new JLabel(getMessage("POINT_B", "点B") + ":");
+ JLabel pointBLabel = new JLabel(getMessage("POINT_B", "鐐笲") + ":");
panel.add(pointBLabel, gbc);
gbc.gridx = 1;
gbc.weightx = 1.0;
pointBTextField = new JTextField();
- pointBTextField.setPreferredSize(new Dimension(200, 25)); // 设置文本框长度为300像素
- pointBTextField.setToolTipText(getMessage("POINT_B1", "格式: 经度,纬度,本地X,本地Y"));
+ pointBTextField.setPreferredSize(new Dimension(200, 25)); // 璁剧疆鏂囨湰妗嗛暱搴︿负300鍍忕礌
+ pointBTextField.setToolTipText(getMessage("POINT_B1", "鏍煎紡: 缁忓害,绾害,鏈湴X,鏈湴Y"));
panel.add(pointBTextField, gbc);
return panel;
}
/**
- * 创建坐标转换面板
+ * 鍒涘缓鍧愭爣杞崲闈㈡澘
*/
private JPanel createCoordinateConversionPanel() {
- JPanel panel = createTitledPanel(getMessage("COORDINATE_CONVERSION", "坐标转换"));
+ JPanel panel = createTitledPanel(getMessage("COORDINATE_CONVERSION", "鍧愭爣杞崲"));
panel.setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.HORIZONTAL;
- gbc.insets = new Insets(5, 5, 5, 5); // 设置组件间距为5像素
+ gbc.insets = new Insets(5, 5, 5, 5); // 璁剧疆缁勪欢闂磋窛涓�5鍍忕礌
- // XY转经纬度
+ // XY杞粡绾害
gbc.gridx = 0;
gbc.gridy = 0;
gbc.weightx = 0;
- JLabel xyToLonLatLabel = new JLabel(getMessage("XY_TO_LONLAT", "XY转经纬度") + ":");
+ JLabel xyToLonLatLabel = new JLabel(getMessage("XY_TO_LONLAT", "XY杞粡绾害") + ":");
panel.add(xyToLonLatLabel, gbc);
gbc.gridx = 1;
gbc.weightx = 1.0;
xyToLonLatTextField = new JTextField();
- xyToLonLatTextField.setPreferredSize(new Dimension(200, 25)); // 设置文本框长度为300像素
- xyToLonLatTextField.setToolTipText(getMessage("XY_TO_LONLAT1", "输入X,Y坐标"));
+ xyToLonLatTextField.setPreferredSize(new Dimension(200, 25)); // 璁剧疆鏂囨湰妗嗛暱搴︿负300鍍忕礌
+ xyToLonLatTextField.setToolTipText(getMessage("XY_TO_LONLAT1", "杈撳叆X,Y鍧愭爣"));
panel.add(xyToLonLatTextField, gbc);
gbc.gridx = 2;
gbc.weightx = 0;
- JButton convertXYButton = createStyledButton(getMessage("CONVERT", "转换"));
+ JButton convertXYButton = createStyledButton(getMessage("CONVERT", "杞崲"));
convertXYButton.addActionListener(e -> convertXYToLonLat());
panel.add(convertXYButton, gbc);
- // 转换结果1
+ // 杞崲缁撴灉1
gbc.gridx = 0;
gbc.gridy = 1;
gbc.weightx = 0;
- JLabel result1Label = new JLabel(getMessage("RESULT", "结果") + ":");
+ JLabel result1Label = new JLabel(getMessage("RESULT", "缁撴灉") + ":");
panel.add(result1Label, gbc);
gbc.gridx = 1;
gbc.weightx = 1.0;
result1TextField = new JTextField();
- result1TextField.setPreferredSize(new Dimension(200, 25)); // 设置文本框长度为300像素
+ result1TextField.setPreferredSize(new Dimension(200, 25)); // 璁剧疆鏂囨湰妗嗛暱搴︿负300鍍忕礌
result1TextField.setEditable(false);
panel.add(result1TextField, gbc);
- // 经纬度转XY
+ // 缁忕含搴﹁浆XY
gbc.gridx = 0;
gbc.gridy = 2;
gbc.weightx = 0;
- JLabel lonLatToXYLabel = new JLabel(getMessage("LONLAT_TO_XY", "经纬度转XY") + ":");
+ JLabel lonLatToXYLabel = new JLabel(getMessage("LONLAT_TO_XY", "缁忕含搴﹁浆XY") + ":");
panel.add(lonLatToXYLabel, gbc);
gbc.gridx = 1;
gbc.weightx = 1.0;
lonLatToXYTextField = new JTextField();
- lonLatToXYTextField.setPreferredSize(new Dimension(200, 25)); // 设置文本框长度为300像素
- lonLatToXYTextField.setToolTipText(getMessage("LONLAT_TO_XY1", "输入经度,纬度"));
+ lonLatToXYTextField.setPreferredSize(new Dimension(200, 25)); // 璁剧疆鏂囨湰妗嗛暱搴︿负300鍍忕礌
+ lonLatToXYTextField.setToolTipText(getMessage("LONLAT_TO_XY1", "杈撳叆缁忓害,绾害"));
panel.add(lonLatToXYTextField, gbc);
gbc.gridx = 2;
gbc.weightx = 0;
- JButton convertLonLatButton = createStyledButton(getMessage("CONVERT", "转换"));
+ JButton convertLonLatButton = createStyledButton(getMessage("CONVERT", "杞崲"));
convertLonLatButton.addActionListener(e -> convertLonLatToXY());
panel.add(convertLonLatButton, gbc);
- // 转换结果2
+ // 杞崲缁撴灉2
gbc.gridx = 0;
gbc.gridy = 3;
gbc.weightx = 0;
- JLabel result2Label = new JLabel(getMessage("RESULT", "结果") + ":");
+ JLabel result2Label = new JLabel(getMessage("RESULT", "缁撴灉") + ":");
panel.add(result2Label, gbc);
gbc.gridx = 1;
gbc.weightx = 1.0;
result2TextField = new JTextField();
- result2TextField.setPreferredSize(new Dimension(200, 25)); // 设置文本框长度为300像素
+ result2TextField.setPreferredSize(new Dimension(200, 25)); // 璁剧疆鏂囨湰妗嗛暱搴︿负300鍍忕礌
result2TextField.setEditable(false);
panel.add(result2TextField, gbc);
@@ -174,53 +174,53 @@
}
/**
- * 创建距离计算面板
+ * 鍒涘缓璺濈璁$畻闈㈡澘
*/
private JPanel createDistanceCalculationPanel() {
- JPanel panel = createTitledPanel(getMessage("DISTANCE_CALCULATION", "距离计算"));
+ JPanel panel = createTitledPanel(getMessage("DISTANCE_CALCULATION", "璺濈璁$畻"));
panel.setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.HORIZONTAL;
- gbc.insets = new Insets(5, 5, 5, 5); // 设置组件间距为5像素
+ gbc.insets = new Insets(5, 5, 5, 5); // 璁剧疆缁勪欢闂磋窛涓�5鍍忕礌
- // 原始点1输入
+ // 鍘熷鐐�1杈撳叆
gbc.gridx = 0;
gbc.gridy = 0;
gbc.weightx = 0;
- JLabel point1Label = new JLabel(getMessage("POINT1_RAW", "原始点1") + ":");
+ JLabel point1Label = new JLabel(getMessage("POINT1_RAW", "鍘熷鐐�1") + ":");
panel.add(point1Label, gbc);
gbc.gridx = 1;
gbc.weightx = 1.0;
point1RawTextField = new JTextField();
- point1RawTextField.setPreferredSize(new Dimension(200, 25)); // 设置文本框长度为300像素
+ point1RawTextField.setPreferredSize(new Dimension(200, 25)); // 璁剧疆鏂囨湰妗嗛暱搴︿负300鍍忕礌
panel.add(point1RawTextField, gbc);
- // 原始点2输入
+ // 鍘熷鐐�2杈撳叆
gbc.gridx = 0;
gbc.gridy = 1;
gbc.weightx = 0;
- JLabel point2Label = new JLabel(getMessage("POINT2_RAW", "原始点2") + ":");
+ JLabel point2Label = new JLabel(getMessage("POINT2_RAW", "鍘熷鐐�2") + ":");
panel.add(point2Label, gbc);
gbc.gridx = 1;
gbc.weightx = 1.0;
point2RawTextField = new JTextField();
- point2RawTextField.setPreferredSize(new Dimension(200, 25)); // 设置文本框长度为300像素
+ point2RawTextField.setPreferredSize(new Dimension(200, 25)); // 璁剧疆鏂囨湰妗嗛暱搴︿负300鍍忕礌
panel.add(point2RawTextField, gbc);
- // 计算按钮和结果
+ // 璁$畻鎸夐挳鍜岀粨鏋�
gbc.gridx = 0;
gbc.gridy = 2;
gbc.weightx = 0;
- JButton calculateButton = createStyledButton(getMessage("CALCULATE_DISTANCE", "计算距离"));
+ JButton calculateButton = createStyledButton(getMessage("CALCULATE_DISTANCE", "璁$畻璺濈"));
calculateButton.addActionListener(e -> calculateDistance());
panel.add(calculateButton, gbc);
gbc.gridx = 1;
gbc.weightx = 1.0;
distanceResultTextField = new JTextField();
- distanceResultTextField.setPreferredSize(new Dimension(200, 25)); // 设置文本框长度为300像素
+ distanceResultTextField.setPreferredSize(new Dimension(200, 25)); // 璁剧疆鏂囨湰妗嗛暱搴︿负300鍍忕礌
distanceResultTextField.setEditable(false);
panel.add(distanceResultTextField, gbc);
@@ -228,52 +228,52 @@
}
/**
- * 创建NMEA表格面板
+ * 鍒涘缓NMEA琛ㄦ牸闈㈡澘
*/
private JPanel createNMEATablePanel() {
- JPanel panel = createTitledPanel(getMessage("NMEA_DATA_TABLE", "NMEA数据表"));
+ JPanel panel = createTitledPanel(getMessage("NMEA_DATA_TABLE", "NMEA鏁版嵁琛�"));
panel.setLayout(new BorderLayout());
- // 创建表格列标题
+ // 鍒涘缓琛ㄦ牸鍒楁爣棰�
String[] columns = {
- getMessage("FIELD_NAME", "字段名"),
- getMessage("POINT1", "点1"),
- getMessage("POINT2", "点2")
+ getMessage("FIELD_NAME", "瀛楁鍚�"),
+ getMessage("POINT1", "鐐�1"),
+ getMessage("POINT2", "鐐�2")
};
- // 定义表格行名称
+ // 瀹氫箟琛ㄦ牸琛屽悕绉�
String[] rowNames = {
- getMessage("MSG_ID", "消息ID"),
- getMessage("UTC_TIME", "UTC时间"),
- getMessage("LATITUDE", "纬度"),
- getMessage("LAT_HEMISPHERE", "纬度半球"),
- getMessage("LONGITUDE", "经度"),
- getMessage("LON_HEMISPHERE", "经度半球"),
- getMessage("QUALITY", "质量"),
- getMessage("NUM_SATELLITES", "卫星数量"),
+ getMessage("MSG_ID", "娑堟伅ID"),
+ getMessage("UTC_TIME", "UTC鏃堕棿"),
+ getMessage("LATITUDE", "绾害"),
+ getMessage("LAT_HEMISPHERE", "绾害鍗婄悆"),
+ getMessage("LONGITUDE", "缁忓害"),
+ getMessage("LON_HEMISPHERE", "缁忓害鍗婄悆"),
+ getMessage("QUALITY", "璐ㄩ噺"),
+ getMessage("NUM_SATELLITES", "鍗槦鏁伴噺"),
getMessage("HDOP", "HDOP"),
- getMessage("ALTITUDE", "海拔"),
- getMessage("ALTITUDE_UNIT", "海拔单位"),
- getMessage("GEOID_HEIGHT", "大地水准面高度"),
- getMessage("GEOID_HEIGHT_UNIT", "大地水准面高度单位"),
- getMessage("DIFF_TIME", "差分时间"),
- getMessage("CHECKSUM", "校验和"),
- getMessage("DEVICE_ID", "设备ID"),
- getMessage("DEVICE_POWER", "设备功率"),
- getMessage("SIGNAL_STRENGTH", "信号强度"),
- getMessage("RESERVED1", "保留1"),
- getMessage("RESERVED2", "保留2"),
- getMessage("RESERVED3", "保留3")
+ getMessage("ALTITUDE", "娴锋嫈"),
+ getMessage("ALTITUDE_UNIT", "娴锋嫈鍗曚綅"),
+ getMessage("GEOID_HEIGHT", "澶у湴姘村噯闈㈤珮搴�"),
+ getMessage("GEOID_HEIGHT_UNIT", "澶у湴姘村噯闈㈤珮搴﹀崟浣�"),
+ getMessage("DIFF_TIME", "宸垎鏃堕棿"),
+ getMessage("CHECKSUM", "鏍¢獙鍜�"),
+ getMessage("DEVICE_ID", "璁惧ID"),
+ getMessage("DEVICE_POWER", "璁惧鍔熺巼"),
+ getMessage("SIGNAL_STRENGTH", "淇″彿寮哄害"),
+ getMessage("RESERVED1", "淇濈暀1"),
+ getMessage("RESERVED2", "淇濈暀2"),
+ getMessage("RESERVED3", "淇濈暀3")
};
- // 初始化表格模型
+ // 鍒濆鍖栬〃鏍兼ā鍨�
tableModel = new DefaultTableModel(columns, 0);
- // 添加行数据
+ // 娣诲姞琛屾暟鎹�
for (String rowName : rowNames) {
tableModel.addRow(new Object[]{rowName, "", ""});
}
- // 创建表格并禁用编辑
+ // 鍒涘缓琛ㄦ牸骞剁鐢ㄧ紪杈�
nmeaTable = new JTable(tableModel);
nmeaTable.setEnabled(false);
nmeaTable.setRowHeight(25);
@@ -287,7 +287,7 @@
}
/**
- * 创建带标题边框的面板
+ * 鍒涘缓甯︽爣棰樿竟妗嗙殑闈㈡澘
*/
private JPanel createTitledPanel(String title) {
JPanel panel = new JPanel();
@@ -298,43 +298,43 @@
}
/**
- * 创建样式按钮(参考ExtensionPanel的按钮样式)
+ * 鍒涘缓鏍峰紡鎸夐挳锛堝弬鑰僂xtensionPanel鐨勬寜閽牱寮忥級
*/
private JButton createStyledButton(String text) {
JButton button = new JButton(text);
- // 设置按钮大小为80×25(宽×高)
+ // 璁剧疆鎸夐挳澶у皬涓�80脳25锛堝脳楂橈級
button.setPreferredSize(new Dimension(80, 25));
button.setMinimumSize(new Dimension(80, 25));
button.setMaximumSize(new Dimension(100, 25));
- // 设置按钮样式(参考ExtensionPanel)
+ // 璁剧疆鎸夐挳鏍峰紡锛堝弬鑰僂xtensionPanel锛�
button.setBackground(new Color(0, 120, 215));
button.setForeground(Color.WHITE);
button.setFocusPainted(false);
button.setBorderPainted(false);
button.setFont(button.getFont().deriveFont(Font.BOLD, 12f));
- // 添加鼠标交互效果(参考ExtensionPanel)
+ // 娣诲姞榧犳爣浜や簰鏁堟灉锛堝弬鑰僂xtensionPanel锛�
button.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseEntered(java.awt.event.MouseEvent evt) {
- button.setBackground(new Color(0, 150, 255)); // 悬停时变亮
+ button.setBackground(new Color(0, 150, 255)); // 鎮仠鏃跺彉浜�
button.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
}
public void mouseExited(java.awt.event.MouseEvent evt) {
- button.setBackground(new Color(0, 120, 215)); // 恢复正常颜色
+ button.setBackground(new Color(0, 120, 215)); // 鎭㈠姝e父棰滆壊
button.setCursor(Cursor.getDefaultCursor());
}
public void mousePressed(java.awt.event.MouseEvent evt) {
- // 点击效果 - 颜色变深并有轻微缩小效果
+ // 鐐瑰嚮鏁堟灉 - 棰滆壊鍙樻繁骞舵湁杞诲井缂╁皬鏁堟灉
button.setBackground(new Color(0, 80, 160));
button.setBounds(button.getX() + 1, button.getY() + 1, 78, 23);
}
public void mouseReleased(java.awt.event.MouseEvent evt) {
- // 恢复原状
+ // 鎭㈠鍘熺姸
button.setBackground(new Color(0, 150, 255));
button.setBounds(button.getX() - 1, button.getY() - 1, 80, 25);
}
@@ -344,7 +344,7 @@
}
/**
- * 获取消息文本,如果资源束中没有则使用默认值
+ * 鑾峰彇娑堟伅鏂囨湰锛屽鏋滆祫婧愭潫涓病鏈夊垯浣跨敤榛樿鍊�
*/
private String getMessage(String key, String defaultValue) {
try {
@@ -354,35 +354,35 @@
}
}
- // XY坐标转经纬度
+ // XY鍧愭爣杞粡绾害
private void convertXYToLonLat() {
String xy = xyToLonLatTextField.getText().trim();
if (xy.isEmpty()) {
- JOptionPane.showMessageDialog(this, getMessage("FIELD_REQUIRED", "此字段为必填项"),
- getMessage("VALIDATION_ERROR", "验证错误"), JOptionPane.ERROR_MESSAGE);
+ JOptionPane.showMessageDialog(this, getMessage("FIELD_REQUIRED", "姝ゅ瓧娈典负蹇呭~椤�"),
+ getMessage("VALIDATION_ERROR", "楠岃瘉閿欒"), JOptionPane.ERROR_MESSAGE);
return;
}
- // 获取A点数据
- String[] pointA = pointATextField.getText().split(",|,");
+ // 鑾峰彇A鐐规暟鎹�
+ String[] pointA = pointATextField.getText().split(",|锛�");
if (pointA.length < 4) {
JOptionPane.showMessageDialog(this,
- String.format(getMessage("INVALID_POINT_FORMAT2", "点A格式无效"), getMessage("POINT_A", "点A")),
- getMessage("VALIDATION_ERROR", "验证错误"), JOptionPane.ERROR_MESSAGE);
+ String.format(getMessage("INVALID_POINT_FORMAT2", "鐐笰鏍煎紡鏃犳晥"), getMessage("POINT_A", "鐐笰")),
+ getMessage("VALIDATION_ERROR", "楠岃瘉閿欒"), JOptionPane.ERROR_MESSAGE);
return;
}
- // 获取B点数据
- String[] pointB = pointBTextField.getText().split(",|,");
+ // 鑾峰彇B鐐规暟鎹�
+ String[] pointB = pointBTextField.getText().split(",|锛�");
if (pointB.length < 4) {
JOptionPane.showMessageDialog(this,
- String.format(getMessage("INVALID_POINT_FORMAT3", "点B格式无效"), getMessage("POINT_B", "点B")),
- getMessage("VALIDATION_ERROR", "验证错误"), JOptionPane.ERROR_MESSAGE);
+ String.format(getMessage("INVALID_POINT_FORMAT3", "鐐笲鏍煎紡鏃犳晥"), getMessage("POINT_B", "鐐笲")),
+ getMessage("VALIDATION_ERROR", "楠岃瘉閿欒"), JOptionPane.ERROR_MESSAGE);
return;
}
try {
- // 解析输入数据
+ // 瑙f瀽杈撳叆鏁版嵁
double latA = Double.parseDouble(pointA[1]);
double lonA = Double.parseDouble(pointA[0]);
double localXA = Double.parseDouble(pointA[2]);
@@ -393,69 +393,69 @@
double localXB = Double.parseDouble(pointB[2]);
double localYB = Double.parseDouble(pointB[3]);
- // 检查经纬度是否为零
+ // 妫�鏌ョ粡绾害鏄惁涓洪浂
if (latA == 0 || lonA == 0 || latB == 0 || lonB == 0) {
JOptionPane.showMessageDialog(this,
- String.format(getMessage("ZERO_LATLON", "经纬度不能为零"), getMessage("POINT_A", "点A") + "/" + getMessage("POINT_B", "点B")),
- getMessage("VALIDATION_ERROR", "验证错误"), JOptionPane.ERROR_MESSAGE);
+ String.format(getMessage("ZERO_LATLON", "缁忕含搴︿笉鑳戒负闆�"), getMessage("POINT_A", "鐐笰") + "/" + getMessage("POINT_B", "鐐笲")),
+ getMessage("VALIDATION_ERROR", "楠岃瘉閿欒"), JOptionPane.ERROR_MESSAGE);
return;
}
- String[] xyParts = xy.split(",|,");
+ String[] xyParts = xy.split(",|锛�");
if (xyParts.length < 2) {
- JOptionPane.showMessageDialog(this, getMessage("XY_TO_LONLAT12", "请输入X,Y坐标"),
- getMessage("VALIDATION_ERROR", "验证错误"), JOptionPane.ERROR_MESSAGE);
+ JOptionPane.showMessageDialog(this, getMessage("XY_TO_LONLAT12", "璇疯緭鍏,Y鍧愭爣"),
+ getMessage("VALIDATION_ERROR", "楠岃瘉閿欒"), JOptionPane.ERROR_MESSAGE);
return;
}
String localX = xyParts[0];
String localY = xyParts[1];
- // 调用转换方法
+ // 璋冪敤杞崲鏂规硶
String[] result = XyToLatLngConverter.convertLocalToGlobalCoordinates(
localX, localY,
latA, lonA, latB, lonB,
localXA, localYA, localXB, localYB
);
- // 显示转换结果(十进制经纬度)
+ // 鏄剧ず杞崲缁撴灉锛堝崄杩涘埗缁忕含搴︼級
result1TextField.setText(result[3] + "," + result[2]);
} catch (NumberFormatException e) {
- JOptionPane.showMessageDialog(this, getMessage("INVALID_NUMBER", "无效数字格式"),
- getMessage("VALIDATION_ERROR", "验证错误"), JOptionPane.ERROR_MESSAGE);
+ JOptionPane.showMessageDialog(this, getMessage("INVALID_NUMBER", "鏃犳晥鏁板瓧鏍煎紡"),
+ getMessage("VALIDATION_ERROR", "楠岃瘉閿欒"), JOptionPane.ERROR_MESSAGE);
} catch (Exception e) {
JOptionPane.showMessageDialog(this,
- String.format(getMessage("SAVE_FENCE_ERROR", "保存围栏错误: %s"), e.getMessage()),
- getMessage("ERROR", "错误"), JOptionPane.ERROR_MESSAGE);
+ String.format(getMessage("SAVE_FENCE_ERROR", "淇濆瓨鍥存爮閿欒: %s"), e.getMessage()),
+ getMessage("ERROR", "閿欒"), JOptionPane.ERROR_MESSAGE);
}
}
- // 经纬度转XY坐标
+ // 缁忕含搴﹁浆XY鍧愭爣
private void convertLonLatToXY() {
String lonlat = lonLatToXYTextField.getText().trim();
if (lonlat.isEmpty()) {
- JOptionPane.showMessageDialog(this, getMessage("FIELD_REQUIRED", "此字段为必填项"),
- getMessage("VALIDATION_ERROR", "验证错误"), JOptionPane.ERROR_MESSAGE);
+ JOptionPane.showMessageDialog(this, getMessage("FIELD_REQUIRED", "姝ゅ瓧娈典负蹇呭~椤�"),
+ getMessage("VALIDATION_ERROR", "楠岃瘉閿欒"), JOptionPane.ERROR_MESSAGE);
return;
}
try {
- // 解析当前点的经纬度
- String[] lonLatParts = lonlat.split("[,,]");
+ // 瑙f瀽褰撳墠鐐圭殑缁忕含搴�
+ String[] lonLatParts = lonlat.split("[,锛宂");
if (lonLatParts.length < 2) {
- JOptionPane.showMessageDialog(this, getMessage("INVALID_LONLAT_FORMAT", "经纬度格式无效"),
- getMessage("VALIDATION_ERROR", "验证错误"), JOptionPane.ERROR_MESSAGE);
+ JOptionPane.showMessageDialog(this, getMessage("INVALID_LONLAT_FORMAT", "缁忕含搴︽牸寮忔棤鏁�"),
+ getMessage("VALIDATION_ERROR", "楠岃瘉閿欒"), JOptionPane.ERROR_MESSAGE);
return;
}
String jd1 = lonLatParts[0].trim();
String wd1 = lonLatParts[1].trim();
- // 解析A点数据
- String[] pointA = pointATextField.getText().split("[,,]");
+ // 瑙f瀽A鐐规暟鎹�
+ String[] pointA = pointATextField.getText().split("[,锛宂");
if (pointA.length < 4) {
JOptionPane.showMessageDialog(this,
- String.format(getMessage("INVALID_POINT_FORMAT", "点格式无效"), getMessage("POINT_A", "点A")),
- getMessage("VALIDATION_ERROR", "验证错误"), JOptionPane.ERROR_MESSAGE);
+ String.format(getMessage("INVALID_POINT_FORMAT", "鐐规牸寮忔棤鏁�"), getMessage("POINT_A", "鐐笰")),
+ getMessage("VALIDATION_ERROR", "楠岃瘉閿欒"), JOptionPane.ERROR_MESSAGE);
return;
}
double latA = Double.parseDouble(pointA[1].trim());
@@ -463,12 +463,12 @@
double localXA = Double.parseDouble(pointA[2].trim());
double localYA = Double.parseDouble(pointA[3].trim());
- // 解析B点数据
- String[] pointB = pointBTextField.getText().split("[,,]");
+ // 瑙f瀽B鐐规暟鎹�
+ String[] pointB = pointBTextField.getText().split("[,锛宂");
if (pointB.length < 4) {
JOptionPane.showMessageDialog(this,
- String.format(getMessage("INVALID_POINT_FORMAT", "点格式无效"), getMessage("POINT_B", "点B")),
- getMessage("VALIDATION_ERROR", "验证错误"), JOptionPane.ERROR_MESSAGE);
+ String.format(getMessage("INVALID_POINT_FORMAT", "鐐规牸寮忔棤鏁�"), getMessage("POINT_B", "鐐笲")),
+ getMessage("VALIDATION_ERROR", "楠岃瘉閿欒"), JOptionPane.ERROR_MESSAGE);
return;
}
double latB = Double.parseDouble(pointB[1].trim());
@@ -476,15 +476,15 @@
double localXB = Double.parseDouble(pointB[2].trim());
double localYB = Double.parseDouble(pointB[3].trim());
- // 检查经纬度是否为零
+ // 妫�鏌ョ粡绾害鏄惁涓洪浂
if (latA == 0 || lonA == 0 || latB == 0 || lonB == 0) {
JOptionPane.showMessageDialog(this,
- String.format(getMessage("ZERO_LATLON", "经纬度不能为零"), getMessage("POINT_A", "点A") + "/" + getMessage("POINT_B", "点B")),
- getMessage("VALIDATION_ERROR", "验证错误"), JOptionPane.ERROR_MESSAGE);
+ String.format(getMessage("ZERO_LATLON", "缁忕含搴︿笉鑳戒负闆�"), getMessage("POINT_A", "鐐笰") + "/" + getMessage("POINT_B", "鐐笲")),
+ getMessage("VALIDATION_ERROR", "楠岃瘉閿欒"), JOptionPane.ERROR_MESSAGE);
return;
}
- // 调用转换方法
+ // 璋冪敤杞崲鏂规硶
int[] xyResult = CoordinateTranslator.gps_xy(
new String[]{String.valueOf(lonA), String.valueOf(latA), String.valueOf(localXA), String.valueOf(localYA)},
new String[]{String.valueOf(lonB), String.valueOf(latB), String.valueOf(localXB), String.valueOf(localYB)},
@@ -492,29 +492,29 @@
wd1
);
- // 显示转换结果 (X, Y)
+ // 鏄剧ず杞崲缁撴灉 (X, Y)
result2TextField.setText(xyResult[1] + ", " + xyResult[0]);
} catch (NumberFormatException e) {
- JOptionPane.showMessageDialog(this, getMessage("INVALID_NUMBER", "无效数字格式"),
- getMessage("VALIDATION_ERROR", "验证错误"), JOptionPane.ERROR_MESSAGE);
+ JOptionPane.showMessageDialog(this, getMessage("INVALID_NUMBER", "鏃犳晥鏁板瓧鏍煎紡"),
+ getMessage("VALIDATION_ERROR", "楠岃瘉閿欒"), JOptionPane.ERROR_MESSAGE);
} catch (Exception e) {
JOptionPane.showMessageDialog(this,
- String.format(getMessage("CONVERSION_ERROR", "转换错误: %s"), e.getMessage()),
- getMessage("ERROR", "错误"), JOptionPane.ERROR_MESSAGE);
+ String.format(getMessage("CONVERSION_ERROR", "杞崲閿欒: %s"), e.getMessage()),
+ getMessage("ERROR", "閿欒"), JOptionPane.ERROR_MESSAGE);
}
}
/**
- * 计算两点间距离
+ * 璁$畻涓ょ偣闂磋窛绂�
*/
private void calculateDistance() {
String point1 = point1RawTextField.getText().trim();
String point2 = point2RawTextField.getText().trim();
if (point1.isEmpty() || point2.isEmpty()) {
- JOptionPane.showMessageDialog(this, getMessage("FIELD_REQUIRED", "此字段为必填项"),
- getMessage("VALIDATION_ERROR", "验证错误"), JOptionPane.ERROR_MESSAGE);
+ JOptionPane.showMessageDialog(this, getMessage("FIELD_REQUIRED", "姝ゅ瓧娈典负蹇呭~椤�"),
+ getMessage("VALIDATION_ERROR", "楠岃瘉閿欒"), JOptionPane.ERROR_MESSAGE);
return;
}
@@ -522,53 +522,53 @@
parseNMEAData(point2, 2);
try {
- // 解析NMEA数据获取经纬度
+ // 瑙f瀽NMEA鏁版嵁鑾峰彇缁忕含搴�
String[] fields1 = point1.split(",");
String[] fields2 = point2.split(",");
- // 确保有足够字段 (纬度在索引2,经度在索引4)
+ // 纭繚鏈夎冻澶熷瓧娈� (绾害鍦ㄧ储寮�2锛岀粡搴﹀湪绱㈠紩4)
if (fields1.length < 6 || fields2.length < 6) {
- JOptionPane.showMessageDialog(this, getMessage("INVALID_NMEA_FORMAT", "NMEA数据格式无效"),
- getMessage("VALIDATION_ERROR", "验证错误"), JOptionPane.ERROR_MESSAGE);
+ JOptionPane.showMessageDialog(this, getMessage("INVALID_NMEA_FORMAT", "NMEA鏁版嵁鏍煎紡鏃犳晥"),
+ getMessage("VALIDATION_ERROR", "楠岃瘉閿欒"), JOptionPane.ERROR_MESSAGE);
return;
}
- // 提取点1的经纬度
+ // 鎻愬彇鐐�1鐨勭粡绾害
double lat1 = Double.parseDouble(fields1[2]);
double lon1 = Double.parseDouble(fields1[4]);
- // 提取点2的经纬度
+ // 鎻愬彇鐐�2鐨勭粡绾害
double lat2 = Double.parseDouble(fields2[2]);
double lon2 = Double.parseDouble(fields2[4]);
- // 使用CoordinateTranslator计算距离 (厘米)
+ // 浣跨敤CoordinateTranslator璁$畻璺濈 (鍘樼背)
int distanceCm = CoordinateTranslator.distance2(lon1, lat1, lon2, lat2);
- // 转换为米并保留两位小数
+ // 杞崲涓虹背骞朵繚鐣欎袱浣嶅皬鏁�
double distanceMeters = distanceCm / 100.0;
- String formattedDistance = String.format(Locale.US, "%.2f %s", distanceMeters, getMessage("METERS", "米"));
+ String formattedDistance = String.format(Locale.US, "%.2f %s", distanceMeters, getMessage("METERS", "绫�"));
- // 显示计算结果
+ // 鏄剧ず璁$畻缁撴灉
distanceResultTextField.setText(formattedDistance);
} catch (NumberFormatException e) {
- JOptionPane.showMessageDialog(this, getMessage("INVALID_NUMBER", "无效数字格式"),
- getMessage("VALIDATION_ERROR", "验证错误"), JOptionPane.ERROR_MESSAGE);
+ JOptionPane.showMessageDialog(this, getMessage("INVALID_NUMBER", "鏃犳晥鏁板瓧鏍煎紡"),
+ getMessage("VALIDATION_ERROR", "楠岃瘉閿欒"), JOptionPane.ERROR_MESSAGE);
} catch (Exception e) {
JOptionPane.showMessageDialog(this,
- String.format(getMessage("CALCULATION_ERROR", "计算错误: %s"), e.getMessage()),
- getMessage("ERROR", "错误"), JOptionPane.ERROR_MESSAGE);
+ String.format(getMessage("CALCULATION_ERROR", "璁$畻閿欒: %s"), e.getMessage()),
+ getMessage("ERROR", "閿欒"), JOptionPane.ERROR_MESSAGE);
}
}
/**
- * 解析NMEA数据到表格
+ * 瑙f瀽NMEA鏁版嵁鍒拌〃鏍�
*/
private void parseNMEAData(String nmea, int pointIndex) {
String[] fields = nmea.split(",");
int column = pointIndex;
- // 填充表格数据
+ // 濉厖琛ㄦ牸鏁版嵁
for (int i = 0; i < Math.min(fields.length, tableModel.getRowCount()); i++) {
tableModel.setValueAt(fields[i], i, column);
}
--
Gitblit v1.10.0