使用的jar包为jxl.jar,单词数据文件words.xls,格式:第一列日语单词,第二列汉语。
Words.java
package com.gary.gui;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import com.gary.util.japanese.RandomWord;
import com.gary.util.japanese.RandomWords;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
/**
* 日语学习小工具
* @author gary
*
*/
public class Words extends JFrame implements ActionListener {
private static final long serialVersionUID = 3308314925505359304L;
private JLabel textLabel;
private JButton nextButton;
private JMenuItem jmiHelp, jmiAbout, jmiExit;
private JComboBox select;
public Words(String title) {
super(title);
Container cp = this.getContentPane();
cp.setLayout(new FlowLayout());
select = new JComboBox();
select.setModel(new DefaultComboBoxModel(new String[] { "全部", "单词",
"汉语", "五十音图", "假名", "平假名", "片假名", "罗马音" }));
cp.add(select);
cp.add(nextButton = new JButton("下一个"));
nextButton.addActionListener(this);
cp.add(textLabel = new JLabel("Welcome!"));
JMenuBar jmb = new JMenuBar();
setJMenuBar(jmb);
JMenu fileMenu = new JMenu("File", false);
JMenu helpMenu = new JMenu("Help", false);
jmb.add(fileMenu);
jmb.add(helpMenu);
fileMenu.add(jmiExit = new JMenuItem("Exit"));
helpMenu.add(jmiHelp = new JMenuItem("Help"));
helpMenu.add(jmiAbout = new JMenuItem("About"));
jmiExit.addActionListener(this);
jmiHelp.addActionListener(this);
jmiAbout.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
switch (select.getSelectedIndex()) {
case 0:
textLabel.setText(RandomWords.randomAll());
break;
case 1:
textLabel.setText(RandomWords.randomJapanese());
break;
case 2:
textLabel.setText(RandomWords.randomChinese());
break;
case 3:
textLabel.setText(RandomWord.randomAll());
break;
case 4:
textLabel.setText(RandomWord.randomAllWords());
break;
case 5:
textLabel.setText(RandomWord.randomHiranagana());
break;
case 6:
textLabel.setText(RandomWord.randomKatakana());
break;
case 7:
textLabel.setText(RandomWord.randomSound());
break;
}
if (e.getSource() == jmiHelp) {
JOptionPane.showMessageDialog(this,
"把words.xls文件放在本程序目录下,xls格式:第一列为外语,第二列为汉语。本程序自带日语五十音图数据。");
} else if (e.getSource() == jmiAbout) {
JOptionPane.showMessageDialog(this,
"日语学习工具V1.0 Powered by gary.QQ:408036296");
} else if (e.getSource() == jmiExit)
System.exit(0);
}
public static void main(String[] args) {
Words frame = new Words("日语");
frame.setSize(180, 120);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
JapaneseUtil.java
package com.gary.util.japanese;
import java.util.Arrays;
/**
* 日语工具
* @author gary
*
*/
public class JapaneseUtil {
/**
* 片假名
*/
public static final String[][] katakana_words = {
{"ア","イ","ウ","エ","オ"},
{"カ","キ","ク","ケ","コ"},
{"サ","シ","ス","セ","ソ"},
{"タ","チ","ツ","テ","ト"},
{"ナ","ニ","ヌ","ネ","ノ"},
{"ハ","ヒ","フ","へ","ホ"},
{"マ","ミ","ム","メ","モ"},
{"ヤ"," ","ユ"," ","ヨ"},
{"ラ","リ","ル","レ","ロ"},
{"ワ"," "," "," ","ヲ"},
{"ン"}
};
/* 空 */
public static final String emptyStr = " ";
/**
* 罗马音
*/
public static final String[][] sounds = {
{"a","i","u","e","o"},
{"ka","ki","ku","ke","ko"},
{"sa","si","su","se","so"},
{"ta","ti","tu","te","to"},
{"na","ni","nu","ne","no"},
{"ha","hi","hu","he","ho"},
{"ma","mi","mu","me","mo"},
{"ya"," ","yu"," ","yo"},
{"ra","ri","ru","re","ro"},
{"wa"," "," "," ","wo"},
{"n"}
};
/**
* 平假名
*/
public static final String[][] hiranagana_words = {
{"あ","い","う","え","お"},
{"か","き","く","け","こ"},
{"さ","し","す","せ","そ"},
{"た","ち","つ","て","と"},
{"な","に","ぬ","ね","の"},
{"は","ひ","ふ","へ","ほ"},
{"ま","み","む","め","も"},
{"や"," ","ゆ"," ","よ"},
{"ら","り","る","れ","こ"},
{"わ"," "," "," ","を"},
{"ん"}
};
/**
* 根据假名查找
* @param word 假名
* @return
*/
public static String findByWords(String word){
String katakanaSound = find(katakana_words, sounds, word);
String hiranaganaSound = find(hiranagana_words, sounds, word);
if(katakanaSound != null){
return katakanaSound;
}else if(hiranaganaSound != null){
return hiranaganaSound;
}else{
return "未找到";
}
}
/**
* 根据罗马音查找
* @param sound 罗马音
* @return
*/
public static String findBySounds(String sound){
return find(sounds, hiranagana_words, sound) + " " + find(sounds, katakana_words, sound);
}
/**
* 查找
* @param sourceData 源数组
* @param targetData 目标数组
* @param key 关键字
* @return
*/
public static String find(String[][] sourceData, String[][] targetData, String key){
for (int i = 0; i < sourceData.length; i++) {
for (int j = 0; j < sourceData[i].length; j++) {
if(sourceData[i][j].equals(key)){
return targetData[i][j];
}
}
}
return null;
}
/**
* 输出
* @param wordsArray
* @param soundsArray
*/
public static void print(String[][] wordsArray, String[][] soundsArray){
final String space = " ";
for (int i = 0; i < wordsArray.length; i++) {
for (int j = 0; j < wordsArray[i].length; j++) {
if(j == wordsArray[i].length-1){
if(wordsArray[i][j].equals(emptyStr)){
System.out.println(space);
}else{
System.out.println(wordsArray[i][j]+soundsArray[i][j]);
}
}else{
if(wordsArray[i][j].equals(emptyStr)){
System.out.print(space);
}else{
System.out.print(wordsArray[i][j]+soundsArray[i][j]+", ");
}
}
}
}
}
/**
* 输出
* @param wordsArrayA
* @param wordsArrayB
* @param soundsArray
*/
public static void print(String[][] wordsArrayA,String[][] wordsArrayB , String[][] soundsArray){
final String space = " ";
for (int i = 0; i < wordsArrayA.length; i++) {
for (int j = 0; j < wordsArrayA[i].length; j++) {
if(j == wordsArrayA[i].length-1){
if(wordsArrayA[i][j].equals(emptyStr)){
System.out.println(space);
}else{
System.out.println(wordsArrayA[i][j]+wordsArrayB[i][j]+soundsArray[i][j]);
}
}else{
if(wordsArrayA[i][j].equals(emptyStr)){
System.out.print(space);
}else{
System.out.print(wordsArrayA[i][j]+wordsArrayB[i][j]+soundsArray[i][j]+", ");
}
}
}
}
}
/**
* 输出数组
* @param array
*/
public static void printArray(String[][] array){
for (int i = 0; i < array.length; i++) {
System.out.println(Arrays.toString(array[i]));
}
}
}
剩余代码见 日语学习小工具(GUI版)(二)
附件为源码+exe版程序
分享到:
相关推荐
《日语50音学习.zip》是一款基于Visual Studio 2019开发,采用C#编程语言,并结合Winform界面和SQLite数据库技术的辅助学习工具,专为学习日语50音图(平假名与片假名)的用户设计。这款软件能够提供丰富的学习资源...
总的来说,这款“日语词典”软件不仅是一个学习工具,也是一个软件工程的实例,展示了如何将语言学习需求转化为可操作的代码。通过研究源码,开发者可以借鉴其设计模式,改进自己的项目,而学习者则可以通过了解其...
综上所述,"日语连连看.rar"不仅是一个学习工具,还展示了软件开发的技术应用。它结合了日语教育和娱乐,运用了Java编程技术和Access数据库管理,为用户提供了一个互动的学习环境。这样的游戏在教育领域具有很大的...
总的来说,这个项目结合了Java编程、GUI设计以及JSP技术,提供了一个实用的学习工具,帮助日语初学者以互动的方式掌握基础的发音。它不仅展示了Java作为编程语言的强大能力,也为教育领域提供了创新的教学方法。同时...
课程中,学生还会学习到如何使用RapidTest Script Wizard,这是一个辅助工具,能够帮助初学者快速学习对象识别和测试脚本的生成。GUI Map有两种模式,一种是全局GUI Map,适用于多个测试脚本共享,另一种是每个测试...
"软件自用日语名词系列2"是一个专门针对这一需求编写的资源,旨在帮助用户扩展他们在软件开发、维护和使用的日语词汇。 【描述】:“软件自用日语名词系列2” 这个系列的第二部分继续深入到软件领域的日语词汇中,...
在计算机使用中,有时我们需要输入非拉丁字符,例如日语中的假名。本文将详细介绍如何在Windows操作系统中安装和管理日语输入法以及字体。...了解这些基本操作,将有助于你在学习和工作中更加流畅地使用日语。
《自制小辞典》项目是基于Kanji2Kana技术的一个实用工具,它主要针对的是日语学习者。Kanji2Kana是一种转换工具,能够帮助用户将汉字(Kanji)自动转化为对应的假名(Kana),这对于理解和学习日语中的汉字发音非常...
标题中的“日本语片假名转换器japanhr”指的是一个专门用于将日本语中的当用汉字转换...总的来说,"日本语片假名转换器japanhr"是一个方便的学习辅助工具,对于任何希望掌握日语发音的人来说,都是一个值得尝试的资源。
"oboete:日语课的趣味游戏"是一个基于C#编程语言开发的日语学习应用程序,旨在通过游戏化的方式提升学习者对日语的记忆和理解。在这个项目中,开发者利用C#的强大功能创建了一个互动的学习环境,使用户能够在娱乐中...
官方多国语言版意味着C#编程工具和服务不仅限于英文,还包括其他多种语言,如简体中文、繁体中文、法语、德语、日语等。这使得全球各地的开发者都能无障碍地学习和使用C#,无论他们的母语是什么。在设置中,你可以...
综上所述,"trans_tool.zip" 提供了一个专门针对日语学习者的翻译工具,其背后的技术栈包括Python编程、wxPython GUI框架以及利用OpenSSL进行数据安全处理。通过网络爬虫技术,工具可能能够持续更新其翻译资源,为...
- **NMake**:是一个用于自动化构建过程的工具,可以通过编写Makefile文件来自动编译和链接源代码。 以上是关于Win32编程的一些基础知识概述,希望对初学者有所帮助。在实际开发过程中,还需要不断深入学习和实践...
在学习外语时,尤其是像日语这样的语言,掌握词汇是基础,默写单词是一种有效的记忆方法。通过这个程序,用户可以进行自我测试,提高他们的词汇量和记忆力。 【描述】指出该程序利用了PostgreSQL数据库存储日语单词...
【VB6-阿杰日文录入系统】是一个由个人开发者独立设计的日文输入软件,它专为学习和提高日文录入速度而创建。VB6,全称Visual Basic ...无论是对于日语学习者还是VB6开发者,都能从中获取有价值的学习资源和实践经验。
在学习计算机日语时,理解这些词汇对于在日企或与日本进行技术交流时至关重要。 1. **アイコン図標**: 表示计算机程序、文件或功能的小图形,通常出现在屏幕界面上,方便用户快速识别和操作。 2. **モード**: 指...
在IT领域,掌握专业的日语词汇对于理解和交流技术问题至关重要。以下是一些从提供的日语计算机专业单词列表中提取的关键概念及其详细解释: 1. **パラメーターの受け渡し (パラメーターの受け渡し)**: 在编程中,...
这个项目可能包含了词汇查询、解释、发音以及例句等功能,旨在为用户提供一个方便的日语学习工具。 首先,你需要了解Java的基础语法和面向对象编程概念。Java是一种广泛使用的编程语言,其特点是跨平台、安全性高和...
Aglet,源自日语“鞋钉”的发音,是一种轻量级的Java应用程序,主要用于移动设备上的客户端应用开发。它是一个基于Java Micro Edition (JME) 或者早期的Java 2 Platform, Micro Edition (J2ME) 的框架,设计用于创建...