日语学习小工具(GUI版)(一)

使用的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版程序

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值