----中英互译小程序

本文介绍了一款作者自编的简单实用中英翻译工具,旨在帮助学习Java过程中解决语言难题。文章详细阐述了小程序的使用界面、源码结构,包括Maven配置、翻译工具类和GUI实现,并提供了打包成jar和转化为exe的步骤,以方便用户直接运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个简单实用的翻译工具

由于我的英语水平不够好,在学习Java的过程中经常遇到一些不便之处。因此,我决定自己编写了一个翻译程序,以方便自己的学习和使用。希望大家能够与我一起共同学习,相互进步!

使用界面

桌面图标

在这里插入图片描述

双击运行

在这里插入图片描述

中译英

在这里插入图片描述

英译中

在这里插入图片描述


源码

Maven

  <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.9</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.13</version>
        </dependency>
    </dependencies>

翻译工具类

  public static String translate(String query, boolean transliteration) throws Exception {
        String appKey = "Key"; // 应用ID
        String appSecret = "Values"; // 应用密钥

        String salt = String.valueOf(System.currentTimeMillis());
        String sign = md5(appKey + query + salt + appSecret);

        String encodedQuery = URLEncoder.encode(query, "UTF-8");
        String apiUrl = "http://openapi.youdao.com/api?"
                + "q=" + encodedQuery
                + "&from=auto"
                + "&to=zh-CHS"
                + "&appKey=" + appKey
                + "&salt=" + salt
                + "&sign=" + sign;

        if (transliteration) {
            apiUrl += "&transliteration=true";
        }

        URL url = new URL(apiUrl);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setRequestMethod("GET");

        BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
        StringBuilder response = new StringBuilder();
        String line;

        while ((line = reader.readLine()) != null) {
            response.append(line);
        }

        reader.close();

        return parseTranslation(response.toString());
    }
    public static String parseTranslation(String jsonResponse) {
        Gson gson = new Gson();
        TranslationResponse translationResponse = gson.fromJson(jsonResponse, TranslationResponse.class);
        String translation = translationResponse.getTranslationResult();
        String transliteration = translationResponse.getTransliterationResult();

        if (transliteration != null && !transliteration.isEmpty()) {
            translation += "\n音译: " + transliteration;
        }

        return translation;
    }

    public static String md5(String input) {
        try {
            java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5");
            byte[] array = md.digest(input.getBytes("UTF-8"));
            StringBuilder sb = new StringBuilder();
            for (byte bt : array) {
                sb.append(Integer.toHexString((bt & 0xFF) | 0x100).substring(1, 3));
            }
            return sb.toString().toLowerCase();
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    // 定义一个内部类来表示 API 返回的 JSON 结构
    private static class TranslationResponse {
        private String[] translation;
        private String transliteration;

        public String getTranslationResult() {
            return translation != null && translation.length > 0 ? translation[0] : null;
        }

        public String getTransliterationResult() {
            return transliteration;
        }
    }

GUi

package org.example;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Main {
    static String Auto="中英互译-MG";
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }

    private static void createAndShowGUI() {
        // 创建主窗口
        JFrame frame = new JFrame(Auto);

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // 创建面板,并设置布局为 GridBagLayout
        JPanel panel = new JPanel(new GridBagLayout());
        // 设置面板的背景颜色
        panel.setBackground(Color.yellow);

        // 创建文本框、按钮和标签
        JTextField textField = new JTextField();
        textField.setPreferredSize(new Dimension(150, 60));
        textField.setFont(textField.getFont().deriveFont(30f)); // 设置字体大小
        JButton button = new JButton("翻译");

        // 设置按钮的背景颜色
        button.setBackground(Color.cyan);

        JTextArea resultTextArea = new JTextArea(10, 30);
        JScrollPane resultScrollPane = new JScrollPane(resultTextArea);
        resultTextArea.setFont(resultTextArea.getFont().deriveFont(30f));
        // 创建 GridBagConstraints 对象设置组件的位置和大小
        GridBagConstraints c = new GridBagConstraints();
        c.fill = GridBagConstraints.BOTH; // 设置组件在水平和垂直方向上都扩展
        c.gridx = 0;
        c.gridy = 0;
        c.weightx = 1;
        c.weighty = 0;
        c.insets = new Insets(5, 5, 5, 5); // 设置组件之间的垂直间隔和水平间隔

        panel.add(textField, c);

        c.gridy = 1;
        c.weighty = 0;
        panel.add(button, c);

        c.gridy = 2;
        c.weighty = 1;
        panel.add(resultScrollPane,c);

        // 为按钮添加 ActionListener,当用户点击按钮时进行翻译
        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String query = textField.getText();
                boolean transliteration = false; // 默认设置为 false

                try {
                    String result = YoudaoTranslator.translate(query, transliteration);
                    resultTextArea.setText(result);
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
            }
        });
        // 为文本框添加 ActionListener,当用户按下键盘上的"确定"键时进行翻译
        textField.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String query = textField.getText();
                boolean transliteration = false; // 默认设置为 false

                try {
                    String result = YoudaoTranslator.translate(query, transliteration);
                    resultTextArea.setText(result);
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
            }
        });


        // 把面板添加到窗口中并设置窗口可见
        frame.getContentPane().add(panel);
        frame.pack();
        frame.setVisible(true);
    }
}


打包jar

1.点击项目结构

在这里插入图片描述

2.选择工件

3.点击加号,添加jar,选择具有依赖的模块

在这里插入图片描述

4.设置好输出目录

在这里插入图片描述

5.最后点击构建,选择构建工件的构建

在这里插入图片描述

6.最后到指定目录找到jar包,可以双击运行,但是必须有java环境

在这里插入图片描述

jar转exe

1.下载exe4j 软件,并且激活

在这里插入图片描述

2.Choose project type

在这里插入图片描述

3.Configure application

在这里插入图片描述

4.Configure executable

在这里插入图片描述

在这里插入图片描述

5.Java invocation

-Dfile.encoding=GBK

在这里插入图片描述在这里插入图片描述在这里插入图片描述

6.JRE

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.Splash screen

在这里插入图片描述

8.Messages

在这里插入图片描述在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值