基本信息
源码名称:java 英汉双语小词典 源码下载
源码大小:4.24M
文件格式:.rar
开发语言:Java
更新时间:2016-12-27
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 4 元×
微信扫码支付:4 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
package com.mingrisoft.gui;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.JTextPane;
import javax.swing.ListSelectionModel;
import javax.swing.UIManager;
import javax.swing.border.EtchedBorder;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import org.apache.commons.collections.IterableMap;
import org.apache.commons.collections.MapIterator;
import com.mingrisoft.model.Word;
import com.mingrisoft.util.ConfigurationUtil;
import com.mingrisoft.util.DBHelper;
import com.mingrisoft.util.JTextPaneUtil;
import com.mingrisoft.util.SwingUtil;
import com.mingrisoft.util.WebsiteOpener;
import com.mingrisoft.util.WordListCellRenderer;
public class MainFrame extends JFrame {
/**
*
*/
private static final long serialVersionUID = -7454723369403017689L;
private static Font font = ConfigurationUtil.getSystemFont();// 获得系统字体
private JPanel contentPane;
private JTextField wordSearchTextField;
private DefaultListModel model;
private JList wordList;
private Word word;
private static Logger logger = Logger.getLogger(WebsiteOpener.class.getName());// 获得日志对象
private static Level level = ConfigurationUtil.getLevel();// 从属性文件中读取日志等级
private JTextPane textPane;
private JScrollPane wordDetailScrollPane;
static {
logger.setLevel(level);// 使用静态块设置日志等级
}
/**
* Launch the application.
*/
public static void main(String[] args) {
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
} catch (Throwable e) {
e.printStackTrace();
}
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
MainFrame frame = new MainFrame();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public MainFrame() {
setTitle("英汉双语词典");// 设置窗体标题
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 当关闭窗体是退出程序
setSize(600, 371);// 设置窗体大小
setLocation(SwingUtil.centreContainer(getSize()));// 让窗体居中显示
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
JMenu dictionaryManagementMenu = new JMenu("词典管理");
dictionaryManagementMenu.setFont(font);
menuBar.add(dictionaryManagementMenu);
JMenuItem wordAdditionMenuItem = new JMenuItem("添加单词");
wordAdditionMenuItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
do_wordAdditionMenuItem_actionPerformed(e);
}
});
wordAdditionMenuItem.setFont(font);
dictionaryManagementMenu.add(wordAdditionMenuItem);
JMenuItem wordMotificationMenuItem = new JMenuItem("修改单词");
wordMotificationMenuItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
do_wordMotificationMenuItem_actionPerformed(e);
}
});
wordMotificationMenuItem.setFont(font);
dictionaryManagementMenu.add(wordMotificationMenuItem);
JMenuItem wordDeletionMenuItem = new JMenuItem("删除单词");
wordDeletionMenuItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
do_wordDeletionMenuItem_actionPerformed(e);
}
});
wordDeletionMenuItem.setFont(font);
dictionaryManagementMenu.add(wordDeletionMenuItem);
JMenuItem wordFrequencyMenuItem = new JMenuItem("查询统计");
wordFrequencyMenuItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
do_wordFrequencyMenuItem_actionPerformed(e);
}
});
wordFrequencyMenuItem.setFont(font);
dictionaryManagementMenu.add(wordFrequencyMenuItem);
JMenu toolMenu = new JMenu("小工具");
toolMenu.setFont(font);
menuBar.add(toolMenu);
JMenuItem notepadMenuItem = new JMenuItem("记事本");
notepadMenuItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
do_notepadMenuItem_actionPerformed(e);
}
});
notepadMenuItem.setFont(font);
toolMenu.add(notepadMenuItem);
JMenuItem calculatorMenuItem = new JMenuItem("计算器");
calculatorMenuItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
do_calculatorMenuItem_actionPerformed(e);
}
});
calculatorMenuItem.setFont(font);
toolMenu.add(calculatorMenuItem);
JMenu favoriteMenu = new JMenu("收藏夹");
favoriteMenu.setFont(font);
toolMenu.add(favoriteMenu);
IterableMap websites = ConfigurationUtil.getFavorite();// 从XML文件读取网站信息
MapIterator it = websites.mapIterator();// 获得MapIterator
while (it.hasNext()) {
String key = (String) it.next();// 获得网站名称
final String value = (String) it.getValue();// 获得网站地址
JMenuItem webPageMenuItem = new JMenuItem(key);// 使用网站名称创建菜单项
webPageMenuItem.setFont(font);// 设置字体
webPageMenuItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
WebsiteOpener.open(value);// 使用WebsiteOpener类打开网页
}
});
favoriteMenu.add(webPageMenuItem);// 为菜单增加菜单项
}
contentPane = new JPanel();
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
JPanel wordSearchPanel = new JPanel();
wordSearchPanel.setBorder(new EtchedBorder(EtchedBorder.LOWERED, null, null));
contentPane.add(wordSearchPanel, BorderLayout.NORTH);
JLabel wordSearchLabel = new JLabel("请输入要查询的单词:");
wordSearchLabel.setFont(font);
wordSearchPanel.add(wordSearchLabel);
wordSearchTextField = new JTextField();
wordSearchTextField.setFont(font);
wordSearchPanel.add(wordSearchTextField);
wordSearchTextField.setColumns(20);
JButton wordSearchButton = new JButton("查询");
wordSearchButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
do_wordSearchButton_actionPerformed(e);
}
});
wordSearchButton.setFont(font);
wordSearchPanel.add(wordSearchButton);
JPanel wordListPanel = new JPanel();
wordListPanel.setBorder(new EtchedBorder(EtchedBorder.LOWERED, null, null));
wordListPanel.setLayout(new BorderLayout(0, 0));
contentPane.add(wordListPanel, BorderLayout.WEST);
JScrollPane wordListScrollPane = new JScrollPane();
wordListPanel.setPreferredSize(new Dimension(200, 0));
wordListPanel.add(wordListScrollPane, BorderLayout.CENTER);
wordList = new JList();
wordList.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
do_wordList_valueChanged(e);
}
});
model = new DefaultListModel();// 创建表格模型
List<Word> words = DBHelper.retrieveAllWords();// 获得表格中保存的全部单词
for (Word word : words) {
model.addElement(word);// 将单词全部增加到列表模型中
}
wordList.setModel(model);// 为列表设置列表模型
wordList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);// 设置列表选择模式为单选
wordList.setFont(font);// 为列表设置字体
wordList.setCellRenderer(new WordListCellRenderer());// 为列表设置渲染器
wordListScrollPane.setViewportView(wordList);// 在滚动窗格中显示列表
JPanel wordDetailPanel = new JPanel();
wordDetailPanel.setBorder(new EtchedBorder(EtchedBorder.LOWERED, null, null));
wordDetailPanel.setLayout(new BorderLayout(0, 0));
contentPane.add(wordDetailPanel, BorderLayout.CENTER);
wordDetailScrollPane = new JScrollPane();
wordDetailPanel.add(wordDetailScrollPane, BorderLayout.CENTER);
word = DBHelper.retrieveRandomWord();
textPane = new JTextPane();
wordDetailScrollPane.setViewportView(JTextPaneUtil.getTextPane(textPane, word));
}
// 打开增加单词对话框
protected void do_wordAdditionMenuItem_actionPerformed(ActionEvent e) {
WordAdditionDialog dialog = new WordAdditionDialog(model);
dialog.setVisible(true);
}
// 打开修改单词对话框
protected void do_wordMotificationMenuItem_actionPerformed(ActionEvent e) {
Word word = (Word) wordList.getSelectedValue();
if (word == null) {
JOptionPane.showMessageDialog(this, "请选择要修改的单词!", "提示信息", JOptionPane.INFORMATION_MESSAGE);
return;
}
WordModificationDialog dialog = new WordModificationDialog(model, word);
dialog.setVisible(true);
wordDetailScrollPane.setViewportView(JTextPaneUtil.getTextPane(textPane, word));
}
// 删除单词
protected void do_wordDeletionMenuItem_actionPerformed(ActionEvent e) {
Word word = (Word) wordList.getSelectedValue();// 获得用户选择的单词
if (word == null) {
JOptionPane.showMessageDialog(this, "请选择要删除的单词!", "提示信息", JOptionPane.INFORMATION_MESSAGE);
return;
}
int result = JOptionPane.showConfirmDialog(this, "确认删除单词" word "?", "确认信息", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
if (result == JOptionPane.YES_OPTION) {
if (DBHelper.deleteSingleWord(word.getId()) != -1) {
JOptionPane.showMessageDialog(this, "成功删除单词" word "!", "提示信息", JOptionPane.INFORMATION_MESSAGE);
model.removeElement(word);// 在列表模型中删除该单词
return;
} else {
JOptionPane.showMessageDialog(this, "删除单词" word "失败!", "警告信息", JOptionPane.WARNING_MESSAGE);
return;
}
}
}
// 用于打开显示符合查询频率单词的窗体
protected void do_wordFrequencyMenuItem_actionPerformed(ActionEvent e) {
FrequencyTableDialog dialog = new FrequencyTableDialog();
dialog.setVisible(true);
}
// 打开记事本
protected void do_notepadMenuItem_actionPerformed(ActionEvent e) {
Runtime runtime = Runtime.getRuntime();// 获得Runtime对象
try {
runtime.exec("notepad");// 运行系统命令
} catch (IOException e1) {
logger.log(Level.WARNING, "打开记事本失败!", e1);
}
}
// 打开计算器
protected void do_calculatorMenuItem_actionPerformed(ActionEvent e) {
Runtime runtime = Runtime.getRuntime();// 获得Runtime对象
try {
runtime.exec("calc");// 运行系统命令
} catch (IOException e1) {
logger.log(Level.WARNING, "打开计算器失败!", e1);
}
}
protected void do_wordSearchButton_actionPerformed(ActionEvent e) {
String spelling = wordSearchTextField.getText();// 获得用户输入的单词
if (spelling.isEmpty()) {// 判断单词是否为空
JOptionPane.showMessageDialog(this, "请输入要查询的单词!", "提示信息", JOptionPane.INFORMATION_MESSAGE);
return;
}
word = DBHelper.retrieveWordBySpellingForUser(spelling);// 在数据表中查询单词
if (word == null) {// 如果查询是否则询问是否联网查询
int result = JOptionPane.showConfirmDialog(this, "查询的单词并不存在,是否联网查询?", "提示信息", JOptionPane.YES_NO_OPTION);
if (result == JOptionPane.YES_OPTION) {
WebsiteOpener.open("www.iciba.com/" spelling);// 打开网页
}
} else {// 如果查询成功,显示查询到的单词细节
wordDetailScrollPane.setViewportView(JTextPaneUtil.getTextPane(textPane, word));
}
}
protected void do_wordList_valueChanged(ListSelectionEvent e) {
Word word = (Word) wordList.getSelectedValue();// 获得用户选择的单词
wordDetailScrollPane.setViewportView(JTextPaneUtil.getTextPane(textPane, word));// 在文本窗格中显示新单词
}
}