前几天没事的时候写了一个很简陋的单词翻译器,今天来和大家分享一下。
 话不多说,先上截图:

接下来就来看看这个程序如何实现。
先简单整理下这个小程序中设计的几个点:

1、要熟悉Java里面的集合类Map,因为我就是用他来处理单词的英文和中文之间的对应关系。
2、要对Java Swing中的事件处理机制有一定的了解。
3、熟悉Java Swing的面板布局。

我们一步一来制作:
1、制作窗体
  这一步就比较简单了,就是运用Java的面板布局将窗口给创建出来,这里就直接贴代码了(这里只贴核心代码,在最后会给出总代码)

 private JButton button1;private JButton button2;private JTextField text;private JTextArea textshow;private Dimension Dim;                   //封装窗口大小public void init(){//实例化类的数据成员this.Dim = new Dimension(this.getWidth() , this.getHeight());this.button1 = new JButton("英译汉");this.button2 = new JButton("汉译英");this.text = new JTextField();this.textshow = new JTextArea();//上部面板制作JPanel nor_pan = new JPanel();ImageIcon  image = new ImageIcon("src\\cn\\com\\1492060892.jpg");JLabel Limage = new JLabel(image);Limage.setPreferredSize(new Dimension(this.Dim.width, this.Dim.height/2));nor_pan.add(Limage);       //将图片标签添加到面板上this.add(nor_pan , BorderLayout.NORTH);    //上部面板nor_pan添加到容器上//中部面板制作JPanel cen_pan = new JPanel();JLabel Ltext = new JLabel("请输入要查询的内容:");Ltext.setFont(new Font("楷体",Font.BOLD,20));cen_pan.add(Ltext);                                //加在面板上!!!!this.text.setPreferredSize(new Dimension(400 , 30));this.text.setHorizontalAlignment(this.text.CENTER);  //设置居中输入cen_pan.add(this.text);     //文本框添加到面板this.textshow.setPreferredSize(new Dimension(600 , 150));cen_pan.add(this.textshow);this.add(cen_pan , BorderLayout.CENTER);          //中间面板cen_pan添加到容器上//底部面板制作FlowLayout flowlayout = new FlowLayout();flowlayout.setHgap(80);    //组件之间设置80的水平间隔JPanel sou_pan = new JPanel();sou_pan.setLayout(flowlayout);this.button1.setPreferredSize(new Dimension(100,30));this.button2.setPreferredSize(new Dimension(100,30));sou_pan.add(this.button1);sou_pan.add(this.button2);this.add(sou_pan , BorderLayout.SOUTH);//窗口属性设置this.setLocationRelativeTo(null);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setTitle("我的单词查阅器");this.setVisible(true);}

2、事件处理机制
  这里我是按两个事件处理的。

  • 第一个是窗口事件。当窗口为当前活动窗口时,就在程序中添加单词,作为后面查找单词的预备库。
  • 第二个事件自然是按钮事件了。分别单击两个按钮时,窗口做出相应的反应。

这里先给出窗口事件的代码,比较简单。

//窗口激活监听实例类private class WindowHandler extends WindowAdapter{//窗口激活时添加储备单词public void windowActivated(WindowEvent e){DictionaryDemo.this.map = new HashMap<String , String>();DictionaryDemo.this.map.put("apple" , "苹果");DictionaryDemo.this.map.put("pear" , "梨");DictionaryDemo.this.map.put("pig" , "猪");DictionaryDemo.this.map.put("animal" , "动物");DictionaryDemo.this.map.put("book" , "书本");     }}

 下面在给出按钮事件之前,我们先来分析一下。
  我们知道,Map集合存储的数据有对应关系(Map<K , V >),他有一个get()方法用来寻找key对应的Value值。我们这里可以对应英译汉。那么怎样实现汉译英呢?
 因为Map集合里面很容易由key去寻找value(因为key不允许重复,但是value可以重复)。所以我们应该先来写一个函数让我们可以通过value的值去寻找key

这里不考虑多个value对应key,就算有,我们也是取第一个value对应的key

 public  String getKeyByValue(Map map, Object value) {// 首先得到entrySet的迭代器itIterator it =  map.entrySet().iterator();Map.Entry entry = null;boolean match = false;while (it.hasNext()) {entry = (Map.Entry) it.next();Object obj = entry.getValue();if (value.equals(obj)) {match = true;break;}}if (match == true)return (String) entry.getKey();elsereturn " ";}

  下面就可以写按钮事件了。

//按钮事件监听实例类private class myActionEvent implements ActionListener{private int Statue;     //状态参数//设置是汉译英还是英译汉public myActionEvent(int Statue){this.Statue = Statue;}public void actionPerformed(ActionEvent e){String str = DictionaryDemo.this.text.getText(); //获取用户的输入文本//若果用户输入为空if (str==null || str.isEmpty()){JOptionPane.showMessageDialog(DictionaryDemo.this, "请输入要查询的单词" , null , JOptionPane.WARNING_MESSAGE);return ;}//开始查找单词if (this.Statue==1){String meaning1 = DictionaryDemo.this.map.get(str);if (meaning1 == null){JOptionPane.showMessageDialog(DictionaryDemo.this, "没有查到您输入的单词" , null , JOptionPane.WARNING_MESSAGE);return;}elseDictionaryDemo.this.textshow.setText(meaning1);}else if(this.Statue==2){String meaning2 =getKeyByValue(DictionaryDemo.this.map , str);if (meaning2 == " "){JOptionPane.showMessageDialog(DictionaryDemo.this, "没有查到您输入的单词" , null , JOptionPane.WARNING_MESSAGE);return;}elseDictionaryDemo.this.textshow.setText((String) meaning2);}}

下面给出总代码:

package cn.com;import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.util.HashMap;
import java.util.Map;
import java.util.Iterator;import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;public class DictionaryDemo  extends JFrame
{private JButton button1;private JButton button2;private JTextField text;private JTextArea textshow;private Map<String , String> map;     //单词和中文意思 的映射private Dimension Dim;                 //封装窗口大小public void init(){//实例化类的数据成员this.Dim = new Dimension(this.getWidth() , this.getHeight());this.button1 = new JButton("英译汉");this.button2 = new JButton("汉译英");this.text = new JTextField();this.textshow = new JTextArea();//上部面板制作JPanel nor_pan = new JPanel();ImageIcon  image = new ImageIcon("src\\cn\\com\\1492060892.jpg");JLabel Limage = new JLabel(image);Limage.setPreferredSize(new Dimension(this.Dim.width, this.Dim.height/2));nor_pan.add(Limage);       //将图片标签添加到面板上this.add(nor_pan , BorderLayout.NORTH);    //上部面板nor_pan添加到容器上//中部面板制作JPanel cen_pan = new JPanel();JLabel Ltext = new JLabel("请输入要查询的内容:");Ltext.setFont(new Font("楷体",Font.BOLD,20));cen_pan.add(Ltext);                                //加在面板上!!!!this.text.setPreferredSize(new Dimension(400 , 30));this.text.setHorizontalAlignment(this.text.CENTER);  //设置居中输入cen_pan.add(this.text);     //文本框添加到面板this.textshow.setPreferredSize(new Dimension(600 , 150));cen_pan.add(this.textshow);this.add(cen_pan , BorderLayout.CENTER);          //中间面板cen_pan添加到容器上//底部面板制作FlowLayout flowlayout = new FlowLayout();flowlayout.setHgap(80);    //组件之间设置80的水平间隔JPanel sou_pan = new JPanel();sou_pan.setLayout(flowlayout);this.button1.setPreferredSize(new Dimension(100,30));this.button2.setPreferredSize(new Dimension(100,30));sou_pan.add(this.button1);sou_pan.add(this.button2);this.add(sou_pan , BorderLayout.SOUTH);//注册监视器this.button1.addActionListener(new myActionEvent(1));this.button2.addActionListener(new myActionEvent(2));this.addWindowListener(new WindowHandler());//窗口属性设置this.setLocationRelativeTo(null);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setTitle("我的单词查阅器");this.setVisible(true);}//窗口激活监听实例类private class WindowHandler extends WindowAdapter{//窗口激活时添加储备单词public void windowActivated(WindowEvent e){DictionaryDemo.this.map = new HashMap<String , String>();DictionaryDemo.this.map.put("apple" , "苹果");DictionaryDemo.this.map.put("pear" , "梨");DictionaryDemo.this.map.put("pig" , "猪");DictionaryDemo.this.map.put("animal" , "动物");DictionaryDemo.this.map.put("book" , "书本");       }}//按钮事件监听实例类private class myActionEvent implements ActionListener{private int Statue;      //状态参数//设置是汉译英还是英译汉public myActionEvent(int Statue){this.Statue = Statue;}public void actionPerformed(ActionEvent e){String str = DictionaryDemo.this.text.getText(); //获取用户的输入文本//若果用户输入为空if (str==null || str.isEmpty()){JOptionPane.showMessageDialog(DictionaryDemo.this, "请输入要查询的单词" , null , JOptionPane.WARNING_MESSAGE);return ;}//开始查找单词if (this.Statue==1){String meaning1 = DictionaryDemo.this.map.get(str);if (meaning1 == null){JOptionPane.showMessageDialog(DictionaryDemo.this, "没有查到您输入的单词" , null , JOptionPane.WARNING_MESSAGE);return;}elseDictionaryDemo.this.textshow.setText(meaning1);}else if(this.Statue==2){String meaning2 =getKeyByValue(DictionaryDemo.this.map , str);if (meaning2 == " "){JOptionPane.showMessageDialog(DictionaryDemo.this, "没有查到您输入的单词" , null , JOptionPane.WARNING_MESSAGE);return;}elseDictionaryDemo.this.textshow.setText((String) meaning2);}}   // 通过map的value得到keypublic  String getKeyByValue(Map map, Object value) {// 首先得到entrySet的迭代器itIterator it =  map.entrySet().iterator();Map.Entry entry = null;boolean match = false;while (it.hasNext()) {entry = (Map.Entry) it.next();Object obj = entry.getValue();if (value.equals(obj)) {match = true;break;}}if (match == true)return (String) entry.getKey();elsereturn " ";}}public DictionaryDemo(){this.setSize(700, 500);init();}}

测试

package cn.com;public class Test
{public static void main(String args[]){DictionaryDemo win = new DictionaryDemo();}
}

以上就是我们这个程序的全部内容了,由于很简单,所以这里也就没有过多详细的去讲解,如果有疑问的话可以直接私聊我~~~。

Java小程序制作——单词翻译器,原来可以这么简单相关推荐

  1. Wifi热点java_用笔记本电脑开启热点Java小程序

    用笔记本电脑开启热点Java小程序是一条命令设置笔记本成无线热点, 制作"开启无线热点工具,这个小工具实际上是用java来执行cmd命令来完成操作,当然也可以反射jar里边的字节码文件. 使 ...

  2. java斗地主程序制作过程

    java斗地主程序制作过程 效果 项目概况 代码分布 效果 项目概况 代码分布 首先对卡牌进行编写 package com;import java.awt.Point; import java.awt ...

  3. Java安装程序制作工具

    Java安装程序制作工具 IzPack 是一个 Java 安装程序制作工具,能够制作一些简单的安装程序.制作出来的安装程序能在 Unix-like, MacOS X, Windows 等系统平台上运行 ...

  4. 一键安装,双击运行——Java安装程序制作

    如果您喜欢这些文章,欢迎点击此处订阅本Blog <script type="text/javascript"></script> <script sr ...

  5. java小程序:控制台字符动画

    java小程序:控制台字符动画 说在前面 程序效果 代码呈现 说在前面 大一软件工程在读,java萌新一只,第一次写博客,技术很菜勿喷.如有错误欢迎指出! 这个小程序是给朋友的生日礼物,耗时半天,实际 ...

  6. 微信小程序傻瓜制作_盘点:微信小程序制作平台有哪些

    如今各行各业商家的流程获取成本不断上升,想要获取更多流量,就得多拓展新的渠道.而微信小程序,由于开启方便.依托于微信这个十亿流量的大平台.流量入口多,已经成了众多知名品牌的选择.利用小程序,商家可以从 ...

  7. 代金券制作小程序秒代金券_微信小程序制作工具与方法

    小程序日益火爆,激发了大量商户新的开发需求,租房,购物,出行等场景,都不难见到它的踪影,这也让没有入局小程序的企业开始着急,真分夺秒的着手布局小程序,俗话说,磨刀不误砍柴工,在布局之前,小程序制作流程 ...

  8. 小程序制作预算_小程序商城制作多少钱

    现在有做微信小程序商城需求的企业越来越多,在选择小程序制作公司的时候,很多公司上来就报价几万,导致价格太贵让用户望而却步,其实微信小程序制作的价格是不同的,并且不同的制作公司报价也不一样,那么做一个微 ...

  9. java 获取文件所在的文件夹_带你0基础编写一个Java小程序,领略Java程序从编写到编译再到运行的全流程...

    在学习Java之前我们需要先认识下什么是计算机语言?计算机语言又有哪些分类?在了解这些后对我们理解学习帮助是很大的. 要知道计算机语言是人与计算机之间进行信息交流沟通的一种特殊语言,又分为机械语言.汇 ...

最新文章

  1. SAP SD 客户信贷管理解析
  2. onsubmit校验表单时利用ajax的return false无效解决方法
  3. 深入理解ElasticSearch(八):索引管理
  4. Go语言技术教程:Redis介绍安装和使用
  5. 搭建云计算机win10,win10电脑做云服务器
  6. 手机电脑自适应导航源码php,自适应各终端懒人网址导航源码 v2.0
  7. 小身材大用途,用PrimusUI驾驭你的页面
  8. Nginx内置模块简介
  9. python安装idle_Python从零单排之Python环境及IDLE安装
  10. 测试思路系列:《谷歌的软件测试之道》读书笔记
  11. Windows中MySQL的详细安装教程
  12. java 正则判断二进制_如何在Java正则表达式匹配中使用IsAlphabetic二进制属性?
  13. Windows主机连接Windows虚拟机上Oracle数据库
  14. 实现了一个简单的以图搜图功能(带代码)
  15. 一行代码就可以替换n个仓储文件
  16. 前端程序员拿到新电脑第一天,该做些什么?
  17. 野生之地杜兰戈服务器维护么,野生之地杜兰戈不能登陆解决方法大全
  18. Google Chrome 81.0.4044.138 绿色增强版
  19. 无线AP的Fat模式和Fit模式有什么区别?
  20. Delphi读取jpg文件的问题

热门文章

  1. 中国联通与用友签署合作框架协议 多领域展开全面合作
  2. 台式计算机硬盘,台式机硬盘排行 强力推荐两款
  3. 千万级用户产品更名为“亿图脑图 MindMaster”背后:脑图软件市场高速增长
  4. 物流节点的定义,要有物流相关术语
  5. swoft 2启动rpc
  6. 19、商品微服务-srv层实现
  7. Mol文件和SDF文件介绍
  8. 为什么镜像电流源为什么要把c和E极接一条导线
  9. 这个方法,可以实现图片批量裁剪尺寸
  10. Java随机数据生成器