Java语言程序设计 选实验5 GUI初级应用

实验目的与要求:

实验目的: 初步掌握图形界面程序设计。

实验要求:

(1).使用JLable、JTextField、JButton等控件实现中英文互译(中译英、英译中),可以使用词典。在报告中附上程序截图、运行结果和详细的文字说明。(50分)

(2).使用JLabel、JButton等控件实现图片浏览器,能够将选中的图片展示出来。在报告中附上程序截图、运行结果和详细的文字说明。(50分)

(1).使用JLable、JTextField、JButton等控件实现中英文互译(中译英、英译中),可以使用词典。在报告中附上程序截图、运行结果和详细的文字说明。(50分)

    设计:实现Dictionary类和Translator类,将Translator封装起来并且预留一个点击事件监听的接口方便未来的网络版本

package Hw9;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashMap;

public class Translator {
    private String content;
    private String result;
    private Dictionary dictionary;

    JButton b1;
    JTextField t1, t2;
    JLabel l1,l2;
    JFrame f;
    public void createUI(){
        f = new JFrame("Translator");
        l1 = new JLabel("请输入翻译内容");
        l2 = new JLabel("翻译结果");
        t1 = new JTextField("");
        t2 = new JTextField("");
        b1 = new JButton("点击翻译");
        l1.setBounds(50,130,250,20);
        l2.setBounds(450,130,250,20);
        t1.setBounds(50, 150, 250, 200);
        t2.setBounds(450, 150, 250, 200);
        b1.setBounds(320, 150, 100, 30);
        f.add(b1);
        f.add(t1);
        f.add(t2);
        f.add(l1);
        f.add(l2);
        f.setSize(800, 500);
        f.setLayout(null);
        setB1Click();
        f.setVisible(true);
    }

    public void setB1Click(){
        b1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                content = t1.getText();
                result = dictionary.findValue(content);
                t2.setText(result);
            }
        });
    }

    public Translator(){
        dictionary = new Dictionary();
        content = "";
        result = "";
        createUI();
    }

    public static void main(String[] args) {
        Translator translator = new Translator();
    }
}

class Dictionary{
    HashMap<String,String> cToe;
    Dictionary(){
        cToe = new HashMap<>();
        createDictionary();
    }
    public void createDictionary(){
        cToe.put("学习","study");
        cToe.put("study","学习");
    }

    public String findValue(String content){
        if(cToe.get(content)!=null){
            return cToe.get(content);
        }
        return "未找到改词语";
    }
}

 

(2).使用JLabel、JButton等控件实现图片浏览器,能够将选中的图片展示出来。在报告中附上程序截图、运行结果和详细的文字说明。(50分)

设计:同样设置JButton的点击监听事件,然后通过点击控制图片的显示,设计Displayer类和ImgList类

package Hw9;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Arrays;

public class Displayer {
    JFrame jFrame;
    JLabel jLabel;
    JButton[] jButtons;

    Displayer() {
        jFrame = new JFrame("Displayer");
        jLabel = new JLabel("图片展示");
        jButtons = new JButton[2];
        jFrame.setSize(800, 500);
        jFrame.setLayout(null);
        jLabel.setBounds(450, 150, 250, 200);
        jFrame.add(jLabel);
        updateList(new ImgList());
    }

    public void updateList(ImgList imgList) {
        jButtons = new JButton[imgList.getLen()];
        for (int i = 0; i < imgList.getLen(); i++) {
            jButtons[i] = new JButton("图片" + i);
            int finalI = i;
            jButtons[i].addActionListener(e -> jLabel.setIcon(new ImageIcon(imgList.src.get(finalI))));
            jButtons[i].setBounds(50,130+i*30,250,20);
            jFrame.add(jButtons[i]);
        }
    }

    public void showToast(){
        jFrame.setVisible(true);
    }

    public static void main(String[] args) {
        Displayer displayer = new Displayer();
        displayer.showToast();
    }
}

class ImgList {
    ArrayList<String> src;

    ImgList() {
        src = new ArrayList<>();
        createList();
    }

    private void createList() {
        src.add("C:\\Users\\arveis\\IdeaProjects\\Demo2022_9_7\\src\\Hw9\\image\\img1.jpg");
        src.add("C:\\Users\\arveis\\IdeaProjects\\Demo2022_9_7\\src\\Hw9\\image\\img2.png");
        src.add("C:\\Users\\arveis\\IdeaProjects\\Demo2022_9_7\\src\\Hw9\\image\\img3.png");
    }

    public int getLen() {
        return src.size();
    }
}

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值