首页 > 其他分享 >12月25日打卡

12月25日打卡

时间:2023-12-25 17:44:06浏览次数:50  
标签:25 12 String frame import new 打卡 conn constraints

今天完成优化了一下软件构造的实验一的相关内容。

完成百度翻译GUI相关功能代码并测试调用,要求可以实现中文翻译成英文,英文翻译成中文

Sample.java

import org.json.JSONException;
import org.json.JSONObject;

import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;

class Sample {
    public static final String API_KEY = "8hVSvhLnLzYSeROG6aTXdGrb";
    public static final String SECRET_KEY = "T9iIWYQ7tKDv7jWGTZBgUQjyRVfzsG42";

    public static void main(String[] args) throws IOException {
        // 示例用法:
        System.out.println("翻译 'hello' 英译汉: " + translate("hello", "en", "zh"));
        System.out.println("翻译 '你好' 汉译英: " + translate("你好", "zh", "en"));
    }

    static String translate(String text, String from, String to) throws IOException {
        String accessToken = getAccessToken();
        String encodedText = URLEncoder.encode(text, "UTF-8");
        String urlStr = "https://aip.baidubce.com/rpc/2.0/mt/texttrans/v1?access_token=" + accessToken;
        URL url = new URL(urlStr);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();

        conn.setRequestMethod("POST");
        conn.setRequestProperty("Content-Type", "application/json");
        conn.setDoOutput(true);

        String jsonContent = new JSONObject()
                .put("q", text)
                .put("from", from)
                .put("to", to)
                .toString();

        try (OutputStream os = conn.getOutputStream()) {
            byte[] input = jsonContent.getBytes("UTF-8");
            os.write(input, 0, input.length);
        }

        try (BufferedReader br = new BufferedReader(
                new InputStreamReader(conn.getInputStream(), "UTF-8"))) {
            StringBuilder response = new StringBuilder();
            String responseLine;
            while ((responseLine = br.readLine()) != null) {
                response.append(responseLine.trim());
            }
            String responseStr = response.toString();
            System.out.println("Response from API: " + responseStr); // 打印响应内容

            JSONObject responseObject = new JSONObject(responseStr);
            JSONObject resultObject = responseObject.getJSONObject("result"); // 获取 "result" 对象
            return resultObject.getJSONArray("trans_result").getJSONObject(0).getString("dst");
        } catch (JSONException e) {
            e.printStackTrace();
            return "分析JSON响应时出错: " + e.getMessage();
        }
    }

    static String getAccessToken() throws IOException {
        String authHost = "https://aip.baidubce.com/oauth/2.0/token";
        URL url = new URL(authHost);

        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("POST");
        conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
        conn.setDoOutput(true);

        String params = "grant_type=client_credentials&client_id=" + API_KEY + "&client_secret=" + SECRET_KEY;

        try (OutputStream os = conn.getOutputStream()) {
            byte[] input = params.getBytes("UTF-8");
            os.write(input, 0, input.length);
        }

        try (BufferedReader br = new BufferedReader(
                new InputStreamReader(conn.getInputStream(), "UTF-8"))) {
            StringBuilder response = new StringBuilder();
            String responseLine;
            while ((responseLine = br.readLine()) != null) {
                response.append(responseLine.trim());
            }
            JSONObject responseObject = new JSONObject(response.toString());
            return responseObject.getString("access_token");
        }
    }
}

SampleGUI.java

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;

public class SampleGUI {
    private JFrame frame;
    private JTextField textFieldInput;
    private JTextArea textAreaOutput;
    private JComboBox<String> comboBoxLanguage;
    private JButton btnTranslate;
    private JLabel labelInput;
    private JLabel labelOutput;
    private JLabel labelLanguage;

    public SampleGUI() {
        initialize();
    }

    private void initialize() {
        // 创建主框架
        frame = new JFrame("翻译工具");
        frame.setBounds(100, 100, 450, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLayout(new GridBagLayout());

        // 初始化组件
        labelInput = new JLabel("请输入:");
        labelOutput = new JLabel("翻译内容:");
        labelLanguage = new JLabel("请选择:");

        textFieldInput = new JTextField(20);
        textAreaOutput = new JTextArea(5, 20);
        textAreaOutput.setEditable(false);

        comboBoxLanguage = new JComboBox<>(new String[]{"英译汉", "汉译英"});
        btnTranslate = new JButton("翻译");

        // 设置布局并添加组件
        GridBagConstraints constraints = new GridBagConstraints();
        constraints.fill = GridBagConstraints.HORIZONTAL;
        constraints.insets = new Insets(10, 10, 10, 10);

        constraints.gridx = 0;
        constraints.gridy = 0;
        frame.add(labelInput, constraints);

        constraints.gridx = 1;
        frame.add(textFieldInput, constraints);

        constraints.gridx = 0;
        constraints.gridy = 1;
        frame.add(labelLanguage, constraints);

        constraints.gridx = 1;
        frame.add(comboBoxLanguage, constraints);

        constraints.gridx = 0;
        constraints.gridy = 2;
        frame.add(labelOutput, constraints);

        constraints.gridy = 3;
        constraints.gridx = 0;
        constraints.gridwidth = 2;
        frame.add(new JScrollPane(textAreaOutput), constraints);

        constraints.gridy = 4;
        constraints.fill = GridBagConstraints.NONE;
        frame.add(btnTranslate, constraints);

        // 添加翻译功能按钮
        btnTranslate.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String inputText = textFieldInput.getText();
                String selectedLanguage = (String) comboBoxLanguage.getSelectedItem();
                String fromLang, toLang;

                // 根据组合框中的所选项目确定翻译方向
                if ("英译汉".equals(selectedLanguage)) {
                    fromLang = "en";
                    toLang = "zh";
                } else if ("汉译英".equals(selectedLanguage)) {
                    fromLang = "zh";
                    toLang = "en";
                } else {
                    // 只是为了防止意外值,默认为英文到中文
                    fromLang = "en";
                    toLang = "zh";
                }

                try {
                    String translatedText = Sample.translate(inputText, fromLang, toLang);
                    textAreaOutput.setText(translatedText);
                } catch (IOException ioException) {
                    ioException.printStackTrace();
                    textAreaOutput.setText("错误: 不能翻译该文本。");
                }
            }
        });

        // 显示框架
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    SampleGUI window = new SampleGUI();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
}

运行结果:

 需要的jar包:

 

参考资料:https://ai.baidu.com/ai-doc/index/MT

    https://cloud.baidu.com/doc/MT/index.html

https://console.bce.baidu.com/tools/?_=1669807341890#/api?product=AI&project=%E6%9C%BA%E5%99%A8%E7%BF%BB%E8%AF%91&parent=%E9%89%B4%E6%9D%83%E8%AE%A4%E8%AF%81%E6%9C%BA%E5%88%B6&api=oauth%2F2.0%2Ftoken&method=post

 

标签:25,12,String,frame,import,new,打卡,conn,constraints
From: https://www.cnblogs.com/zjq164/p/17926631.html

相关文章

  • 2023年12月江苏/合肥/北京/深圳DAMA-CDGA/CDGP认证招生
    DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义,帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力,促进开展工作实践应用及实际问题解决,形成企业所需的新数字经济下的核心职业竞争能力。DAMA是数据管理方面的认证,帮助数据从业者提升......
  • 2023年12月南京/广州/深圳PMP®项目管理认证开班中
    PMP®认证是ProjectManagementInstitute在全球范围内推出的针对评价个人项目管理知识能力的资格认证体系。国内众多企业已把PMP®认证定为项目经理人必须取得的重要资质。 【PMP®认证收益】1、能力的提升(领导力,执行力,创新能力,竞争力)。2、社会认可度高。3、工作效率提升。4、缩......
  • Windows Server 2025 简体中文版下载 (Inside Preview, updated Dec 2023) - 下一代 W
    WindowsServer2025简体中文版下载(InsidePreview,updatedDec2023)-下一代Windows11ServerWindowsServerNext请访问原文链接:https://sysin.org/blog/windows-server-2025/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org我们知道WindowsServer2022......
  • 适合工业和消费类物联网应用,PIC24FJ128GL305-I/PT、PIC24FJ128GL303-I/M5、PIC24FJ128
    典型应用•人机接口(HMI)•工业和消费类物联网应用•电池供电应用•医疗应用•汽车应用•信息娱乐介绍:PIC24FJGL16位微控制器是超低功耗MCU,设计用于开发各种创新应用(带有或不带显示屏)。这些MCU集成许多内核独立外设(CIP),可在省电模式下运行,可为电池供电和功耗敏感型......
  • Windows 11 绕过 TPM 方法总结,通用免 TPM 镜像下载 (2023 年 12 月更新)
    Windows11绕过TPM方法总结,通用免TPM镜像下载(2023年12月更新)在虚拟机、Mac电脑和TPM不符合要求的旧电脑上安装Windows11的通用方法总结请访问原文链接:https://sysin.org/blog/windows-11-no-tpm/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org本文......
  • 2023年12月深圳CPDA数据分析师认证来这学习
    CPDA数据分析师认证是大数据方面的认证,助力数据分析人员打下扎实的数据分析基础知识功底,为入门数据分析保驾护航。帮助数据分析人员掌握系统化的数据分析思维和方法论,提升工作效率和决策能力,遇到问题能够举一反三,为大部分决策难题提供解决方案。帮助数据分析人员掌握几种通用的数据......
  • 2023年12月北京/南京/深圳软考高级信息系统项目管理师招生
    信息系统项目管理师是全国计算机技术与软件专业技术资格(水平)考试(简称软考)项目之一,是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试,既属于国家职业资格考试,又是职称资格考试。信息系统项目管理师,属于软考三个级别中的“高级”。 【报考要求】 不设学历与资历条......
  • 2023年12月西安/杭州/深圳NPDP产品经理认证招生
    产品经理国际资格认证NPDP是新产品开发方面的认证,集理论、方法与实践为一体的全方位的知识体系,为公司组织层级进行规划、决策、执行提供良好的方法体系支撑。 【认证机构】 产品开发与管理协会(PDMA)成立于1979年,是全球范围内产品开发与管理专业人士最杰出的倡导者,协助个人、企业或......
  • rk3128 HDMI调试
    1.HDMI默认是关闭的,需要打开:@@-146,7+146,7@@};&hdmi{-status="disabled";+status="okay";rockchip,hdmi_audio_source=<0>;};显示配置:&fb{status="okay";rockchip,disp-mod......
  • 12/25每日总结
    树与二叉树的转化树要变成二叉树,那就将树中的所有兄弟结点进行链接,然后每一层与上一层的连接只留下第一个结点的连接二叉树要变成树,那就反方向来一次,将除了第一个结点的其他结点与根节点连接上,然后将兄弟结点连接,这时候二叉树就变回了原来的树森林与二叉树的转化森林转化为二叉树,森......