扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
说先说:你的代码有错误,在最下面,我已经该过了,不是大问题。
创新互联是一家集网站建设,金平企业网站建设,金平品牌网站建设,网站定制,金平网站建设报价,网络营销,网络优化,金平网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
如果你想学好java的话,可以根据这个代码加上我的注解去理解,但不要学这个代码的变成方式或者说变成习惯,这个代码基本上无误,但犯了一些常识性问题,如果养成了这些不好的习惯对以后的编程会有坏的影响。
我是英文学的java,所以有些注解可能不通顺,但我尽力而为了。 有的注解有点长,所以你复制到编译器后稍微编辑一下就可以运行。代码是可以运行,没有问题的。
------------------------------------
import javax.swing.*; //用来创建图形界面,如窗口,表格,按钮等。
import java.awt.*; //作用同上,但已经很少用,能用swing的地方就不要用awt
import java.awt.event.*;//事件管理和控制
import java.sql.*; //数据库语句和操作
import java.lang.System;//这个不知道
/*下面的这6个没有用,纯属写出来吓人*/
import javax.swing.tree.*;
import javax.swing.event.*;
import java.util.*;
import javax.swing.border.*;
import javax.swing.table.*;
import java.lang.String.*;
class Mywindow extends JFrame implements ActionListener//这个类implements actionlistener,意思就是它自己就可以执行actionListener的任务
{
JTextField txf=new JTextField(20); //建一个文字编辑框,长度20(只可以输入一行文字)
JTextArea jt=new JTextArea(10,30);//建一个文字编辑区域,长10宽30(可以回车然后输入多行文字)
JButton btn1=new JButton("查询");//建一个 查询 按钮
Mywindow()//构造函数,每个类必有的,可以为空
{
JFrame frm=new JFrame("Search");//建一个窗口(让其他的东西有地方可放,和容器一样。是3个最高级别的容器之一,其他两个是applet和window)
frm.setBounds(400,300,450,350);//设置大小和位置,前两个是坐标,后两个是大小
Container con=getContentPane();//建一个awt容器对象,用来添加其他元素,最好用这个添加元素。像:frm.add(all); 可以写成 con.add(all);
JPanel pnl4=new JPanel();//建一个面板用来添加其他元素(第二级别容器,最后需要被添加在frame上)
pnl4.setBorder(BorderFactory.createTitledBorder("Search"));//设置边框样式
pnl4.add(txf);//把文字编辑框添加到面板上
pnl4.add(btn1);//把按钮添加到面板上
btn1.addActionListener(this);//添加事件行为监听器(this),this意思是当前对象,呼应 implements ActionListener
JPanel pnl5=new JPanel();//同上
pnl5.setBorder(BorderFactory.createTitledBorder("Result"));//同上
jt.setWrapStyleWord(true);//这个忘了
jt.setLineWrap(true);//在区域规定的宽度下,如果文字的输入到一行最后则会自动令其一行继续,如果是(false),文字输入就会在这一行继续知道回车
pnl5.add(new JScrollPane(jt));//个这个面板添加右侧滚动条,当文字输入超过 长* 宽后 滚动条出现
JPanel all=new JPanel();//同上
all.setLayout(new BorderLayout());//设置布局,borderlayout()分东西南北(上下左右)中五个部分 无论窗口多大,中间占得面积最大
all.add(pnl4,BorderLayout.NORTH);//添加一个面板在上面
all.add(pnl5,BorderLayout.CENTER);//添加一个在中间
frm.add(all);//把最大的这个面板添加到窗口上 也可以用con.add(all);
frm.setVisible(true);//设置窗口显示属性 如果false就是不显示
frm.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});//加一个窗口监听 如果点小红叉关闭窗口则系统推出
}
public void actionPerformed(ActionEvent e)//作为ActionListener类的构造函数,如果你的class implements ActionListenser, 那就必须得有这个,也可以单独写一个class,不过有点麻烦
{
if(e.getSource()==btn1)//当按钮被点击的时候
{
String str="";//建一个字符串
String tmp=this.txf.getText();//同上,这个字符串的值是当前对象(窗口)中,文本框输入的值
for(int k=0;ktmp.length();k++)//建一个 永久循环
str+=tmp.charAt(k)+"%";//把 % 插入每一个字符后面, 作用后面说
String sql=null;//同上
Statement stmt=null;//定义一个stmt,用来建数据库连接的
sql="select * from chinese where charsound like'"+str+"'";//创建一个sql数据库语句,但它本身还是一个字符串
System.out.println(sql);//系统显示创建的语句,通常找错时候用的
try{//try 和 catch 的作用一句两句说不清楚 不知道你就自己查查
Class.forName("com.mysql.jdbc.Driver");//或者:Class.forName("org.gjt.mm.mysql.Driver");关联mysql数据库驱动
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost/japan?user=rootpassword=sa");//建立连接,数据库名japan(为什么不是chinese?)用户名root密码sa
stmt=conn.createStatement();//建立statement对象,用来发送sql语句到数据库
ResultSet rs=stmt.executeQuery(sql);//运行语句并建立一个查询结果的集合
System.out.println("\n------------------------search :"+str+"-------------------------------");//同上
jt.setText("");//清空文本编辑区域
while(rs.next())//while循环,当还有结果的时候,把所有查询结果添加加到文本编辑区域中
{
jt.append(new String(rs.getString("charname").getBytes("iso-8859-1"),"gb2312")+"\t");
System.out.print(new String(rs.getString("charname").getBytes("iso-8859-1"),"gb2312")+"\t");
}
stmt.close();//关闭关连,很重要。
}
catch(Exception eq){System.out.println("error");}
//--------------------------------------------------------------end btn1-------
}
}
public static void main(String args[])
{
Mywindow win=new Mywindow();//建立一个 mywindow 对象
win.pack();//将所有元素整合
win.show();
}
}
public class Test4 {
static MapString, String map = new TreeMapString, String();
static {
map.put("watermelon", "西瓜");
map.put("banana", "香蕉");
map.put("strawberry", "草莓");
map.put("apple", "苹果");
}
public static void main(String[] args) {
System.out.println("请输入单词");
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
String str1 = sc.nextLine();
if(str1.equals("退出")){
return;
}
else if (map.containsKey(str1)) {
System.out.println(map.get(str1));
} else{
System.out.println("次单词为新词,添加意思");
Scanner sc1 = new Scanner(System.in);
String str2=sc1.nextLine();
map.put(str1, str2);
System.out.println("添加成功。");
}
}
}
}
使用java提供的国际化功能就可以了。不过建议你使用框架技术中的国际化,框架技术中的国际化都做过封装,实现起来相对简单的多。只需要简单的配置就可以实现中英文或者其他语言的切换了!~
lz 你好
代码还是比较简单 就是需要一个做好的txt英汉词典文档
以下是一个简单的例子:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
public class EC_Dictionary extends JFrame{
private JTextField input;
private JButton search;
private JTextArea output;
public EC_Dictionary(){
super("英汉词典");
input = new JTextField(14);
search = new JButton("查询");
search.setFont(new Font("宋体", Font.PLAIN, 15));
search.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
searchWords();
}
});
output = new JTextArea(10,18);
output.setEditable(false);
output.setFont(new Font("宋体", Font.PLAIN, 18));
output.setForeground(Color.RED);
setLayout(new FlowLayout(FlowLayout.CENTER, 5, 20));
getContentPane().add(input);
getContentPane().add(search);
getContentPane().add(output);
setSize(300,320);
setResizable(false);
setLocationRelativeTo(null);
setDefaultCloseOperation(3);
setVisible(true);
}
//查询单词
public void searchWords(){
try {
BufferedReader br = new BufferedReader(new FileReader("dictionary.txt"));
String line, inputWord;
boolean isFound = false;
inputWord = input.getText();
if(inputWord.equals("")){
return;
}
while((line = br.readLine()) != null){
Scanner in = new Scanner(line);
if(in.next().equals(inputWord)){
int offset = inputWord.length();
output.setText("\n\n\n\n"+line.substring(offset));
isFound = true;
break;
}
}
if(!isFound){
output.setText("没找到相应项..");
}
}
catch (Exception ex) {
ex.printStackTrace();
}
}
public static void main (String[] args) {
new EC_Dictionary();
}
}
运行效果:
ps:
本程序要用附件中dictionary.txt文档 lz要把源程序和这个文档放在同目录下 才能正常运行
希望能帮助你哈
package zyhz;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;
import java.io.*;
import com.sun.media.sound.*;
public class Dictionary {
public Dictionary() {
}
public static void main(String[] args)
{
dicFrame frame = new dicFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
class dicFrame extends JFrame
{
public dicFrame()
{
setTitle("Dictionary");
setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
panel = new JPanel();
add(panel);
//菜单栏
JMenu fileMenu = new JMenu("文件");
JMenuItem ECItem = new JMenuItem("英汉字典");
ECItem.addActionListener(new
AbstractAction(){
public void actionPerformed(ActionEvent event)
{
text2.setText("请在上面输入英文!!!!");
}
});
JMenuItem CEItem = new JMenuItem("汉英字典");
CEItem.addActionListener(new
AbstractAction(){
public void actionPerformed(ActionEvent event)
{
text2.setText("请在上面输入中文!!!!");
}
});
//备份词库
JMenuItem BackupItem = new JMenuItem("备份词库");
BackupItem.addActionListener(new
AbstractAction(){
public void actionPerformed(ActionEvent event)
{
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
} catch (ClassNotFoundException ce) {
System.out.println(ce);
}
url = "jdbc:odbc:test";
String fileName;
chooser = new JFileChooser();
frame = new JFrame();
chooser.setDialogTitle("备份词库为");
try {
flag = chooser.showSaveDialog(frame);
} catch (HeadlessException h) {
System.out.println("Save File Dialog ERROR!");
}
if (flag == JFileChooser.APPROVE_OPTION) {
f = chooser.getSelectedFile();
fileName = chooser.getName(f);
fileName = chooser.getSelectedFile().getPath();
try {
File saveFile = new File(fileName);
FileWriter fw = new FileWriter(saveFile);
try
{
con = DriverManager.getConnection(url);
s = con.createStatement();
rs = s.executeQuery("SELECT * from 字典 ");
while (rs.next()) {
String a = rs.getString("单词");
String b = rs.getString("词语解释");
text2.append(a+b+"\n");
}
rs.close();
} catch (Exception ea) {
text2.setText("查询数据失败");
}
fw.write(text2.getText());
fw.close();
} catch (IOException ec) {
text2.setText(fileName);
}
text2.setText("词库备份成功!");
}
}
});
fileMenu.add(ECItem);
fileMenu.add(CEItem);
fileMenu.add(BackupItem);
fileMenu.addSeparator();
//退出监听器
fileMenu.add(new
AbstractAction("退出")
{
public void actionPerformed(ActionEvent event)
{
System.exit(0);
}
});
JMenu editMenu = new JMenu("编辑");
JMenuItem addItem = new JMenuItem("添加词汇");
addItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_MASK));
//菜单栏增加监听器
addItem.addActionListener(new
AbstractAction(){
public void actionPerformed(ActionEvent event)
{
if(text1.getText().equals(""))
text2.setText("没有输入内容!请重新增加!!!");
else
{
String s=text1.getText().trim();
String s1=text2.getText().trim();
text2.setText(new add().jadd(text1.getText().trim(),text2.getText().trim()));
text2.append(s+"\n"+s1+";"+" "+"//"+"该内容已增加!!!");
}
}
});
//菜单栏修改监听器
JMenuItem updateItem = new JMenuItem("修改词汇");
updateItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_U,InputEvent.CTRL_MASK));
updateItem.addActionListener(new
AbstractAction(){
public void actionPerformed(ActionEvent event)
{
if(text1.getText().equals(""))
text2.setText("没输入所要修改的内容!请重新输入!!!!");
else{
String s=text1.getText().trim();
text2.setText(new update().jupdate(text1.getText().trim(),
text2.getText().trim()));
text2.append(s+" "+"//"+"该内容已修改!!!");
}
}
});
//菜单栏删除监听器
JMenuItem deleteItem = new JMenuItem("删除词汇");
deleteItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D,InputEvent.CTRL_MASK));
deleteItem.addActionListener(new
AbstractAction(){
public void actionPerformed(ActionEvent event)
{
if(text1.getText().equals(""))
text2.setText("没输入所要删除的内容!请重新输入!!!!");
else{
String s=text1.getText().trim();
text2.setText(new delete().jdelete(text1.getText().trim()));
text2.append(s+" "+"//"+"该内容已删除!!!");
}
}
});
editMenu.add(addItem);
editMenu.add(updateItem);
editMenu.add(deleteItem);
JMenu helpMenu = new JMenu("Help");
helpMenu.setMnemonic('H');
aboutItem = new JMenuItem("About");
aboutItem.setMnemonic('A');
aboutItem.addActionListener(new
AbstractAction(){
public void actionPerformed(ActionEvent event)
{
new guanyu();
}
});
helpMenu.add(aboutItem);
menubar = new JMenuBar();
setJMenuBar(menubar);
menubar.add(fileMenu);
menubar.add(editMenu);
menubar.add(helpMenu);
//工具栏
label = new JLabel("请输入:");
text1= new JTextField("");
selectButton = new JButton("查询");
//工具栏查询监听器
selectButton.addActionListener(new
AbstractAction(){
public void actionPerformed(ActionEvent event)
{
if(text1.getText().equals(""))
text2.setText("没有输入查询内容!请重新输入!!!");
else text2.setText(new select().jselect(text1.getText().trim()));
}
});
//工具栏增加监听器
addButton = new JButton("增加");
addButton.addActionListener(new
AbstractAction(){
public void actionPerformed(ActionEvent event)
{
if(text1.getText().equals(""))
text2.setText("没有输入内容!请重新增加!!!");
else
{
String s=text1.getText().trim();
String s1=text2.getText().trim();
text2.setText(new add().jadd(text1.getText().trim(),text2.getText().trim()));
text2.append(s+"\n"+s1+";"+" "+"//"+"该内容已增加!!!");
}
}
});
//工具栏修改监听器
updateButton = new JButton("修改");
updateButton.addActionListener(new
AbstractAction(){
public void actionPerformed(ActionEvent event)
{
if(text1.getText().equals(""))
text2.setText("没输入所要修改的内容!请重新输入!!!!");
else{
String s=text1.getText().trim();
text2.setText(new update().jupdate(text1.getText().trim(),
text2.getText().trim()));
text2.append(s+" "+"//"+"该内容已修改!!!");
}
}
});
//工具栏删除监听器
deleteButton = new JButton("删除");
deleteButton.addActionListener(new
AbstractAction(){
public void actionPerformed(ActionEvent event)
{
if(text1.getText().equals(""))
text2.setText("没输入所要删除的内容!请重新输入!!!!");
else{
String s=text1.getText().trim();
text2.setText(new delete().jdelete(text1.getText().trim()));
text2.append(s+" "+"//"+"该内容已删除!!!");
}
}
});
soundButton = new JButton("读音");
soundButton.addActionListener(new
AbstractAction(){
public void actionPerformed(ActionEvent event)
{
JavaSoundAudioClip player;
try{
strsound = text2.getText().trim();
FileInputStream ff = new FileInputStream("sound//"+strsound+".wav");
player = new JavaSoundAudioClip(ff);
player.play();
}
catch(Exception e) {
System.out.println("error");
e.printStackTrace();
}
}
});
//万年历
dateButton = new JButton("万年历");
dateButton.addActionListener(new
AbstractAction() {
public void actionPerformed(ActionEvent event)
{
new calendar();
}
});
toolbar = new JToolBar();
add(toolbar,BorderLayout.NORTH);
toolbar.add(label);
toolbar.add(text1);
toolbar.add(selectButton);
toolbar.add(addButton);
toolbar.add(updateButton);
toolbar.add(deleteButton);
toolbar.add(soundButton);
toolbar.add(dateButton);
text2 = new JTextArea(8,40);
text2.setLineWrap(true);
JScrollPane scroll = new JScrollPane(text2);
add(scroll,BorderLayout.CENTER);
//快捷菜单 剪切,复制,粘贴
JPopupMenu popup= new JPopupMenu();
text2.setComponentPopupMenu(popup);
popup.add(new
AbstractAction("剪切",new ImageIcon("cut.gif"))
{
public void actionPerformed(ActionEvent event)
{
text2.cut();
}
});
popup.add(new
AbstractAction("复制",new ImageIcon("copy.gif"))
{
public void actionPerformed(ActionEvent event)
{
text2.copy();
}
});
popup.add(new
AbstractAction("粘贴",new ImageIcon("paste.gif"))
{
public void actionPerformed(ActionEvent event)
{
text2.paste();
}
});
text1.setComponentPopupMenu(popup);
}
public static final int DEFAULT_WIDTH = 400;
public static final int DEFAULT_HEIGHT = 250;
private JPanel panel;
private JMenuBar menubar;
private JToolBar toolbar;
private JLabel label;
private JTextField text1;
private JTextArea text2;
private JButton selectButton;
private JButton addButton;
private JButton updateButton;
private JButton deleteButton;
private JButton soundButton;
private JButton dateButton;
private JMenuItem aboutItem;
private Connection con;
private String url;
private Statement s;
private ResultSet rs;
public BufferedWriter Buffer;
private JFileChooser chooser;
private File f;
private JFrame frame;
private int flag;
private boolean b1;
private String strsound;
}
//查询类
class select {
private Connection con;
private String url;
private PreparedStatement pstmt;
private String sql,zz;
private ResultSet rs;
select() {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
} catch (ClassNotFoundException ce) {
System.out.println(ce);
}
url = "jdbc:odbc:test";
}
public String jselect(String str) {
try {
con = DriverManager.getConnection(url);
sql = "select 词语解释 from 字典 where 单词=?";
pstmt= con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
pstmt.setString(1,str);
rs = pstmt.executeQuery();
while (rs.next()) {
System.out.print(rs.getString(1));
zz=rs.getString(1);
System.out.println(" ");
}
rs.close();
pstmt.close();
con.close();
} catch (SQLException ce) {
System.out.println(ce);}
return zz;
}
}
//增加类
class add {
private Connection con;
private String url;
private PreparedStatement pstmt;
private String sql,sql1,zz;
private ResultSet rs;
add() {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
} catch (ClassNotFoundException ce) {
System.out.println(ce);
}
url = "jdbc:odbc:test";
}
public String jadd(String str1,String str2) {
try {
con = DriverManager.getConnection(url);
sql = "insert into 字典 values(?,?)";
pstmt= con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
pstmt.setString(1,str1);
pstmt.setString(2,str2);
pstmt.executeUpdate();
Statement s = con.createStatement();
sql1 = "SELECT * FROM 字典 ";
rs = s.executeQuery(sql1);
while (rs.next()) {
System.out.print(rs.getString(1));
System.out.print(rs.getString(2));
System.out.println(" ");
}
rs.close();
pstmt.close();
con.close();
} catch (SQLException ce) {
System.out.println(ce);}
return zz;
}
}
//修改类
class update {
private Connection con;
private String url;
private PreparedStatement pstmt;
private String sql,sql1,zz;
private ResultSet rs;
update() {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
} catch (ClassNotFoundException ce) {
System.out.println(ce);
}
url = "jdbc:odbc:test";
}
public String jupdate(String str1,String str2) {
try {
con = DriverManager.getConnection(url);
sql = "UPDATE 字典 SET 词语解释=? WHERE 单词=?";
pstmt= con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
pstmt.setString(1,str1);
pstmt.setString(2,str2);
pstmt.executeUpdate();
Statement s = con.createStatement();
sql1 = "SELECT * FROM 字典 ";
rs = s.executeQuery(sql1);
while (rs.next()) {
System.out.print(rs.getString(1));
System.out.print(rs.getString(2));
System.out.println(" ");
}
rs.close();
pstmt.close();
con.close();
} catch (SQLException ce) {
System.out.println(ce);}
return zz;
}
}
//删除类
class delete {
private Connection con;
private String url;
private PreparedStatement pstmt;
private String sql,sql1,zz;
private ResultSet rs;
delete() {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
} catch (ClassNotFoundException ce) {
System.out.println(ce);
}
url = "jdbc:odbc:test";
}
public String jdelete(String str1) {
try {
con = DriverManager.getConnection(url);
sql = "delete 字典 WHERE 单词=?";
pstmt= con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
pstmt.setString(1,str1);
pstmt.executeUpdate();
Statement s = con.createStatement();
sql1 = "SELECT * FROM 字典 ";
rs = s.executeQuery(sql1);
while (rs.next()) {
System.out.print(rs.getString(1));
System.out.print(rs.getString(2));
System.out.println(" ");
}
rs.close();
pstmt.close();
con.close();
} catch (SQLException ce) {
System.out.println(ce);}
return zz;
}
}
还有个数据库,如果你能留个邮箱,我把整份程序传给你~希望能帮到你
如果只是课设的话,你直接26个字母是26张表,
把用户传来的单词取首字母,判断属于 哪张表
然后select * from tableA where value =‘用户输入的单词’
把返回值处理显示呗~~~~~。
这么做,因为表比较少,会导致表中的单词量比较大,select速度也是问题。
但是因为是课设,就不考虑那么多了
不然再根据第二个字母,把每张表分成两张也可以 。
不涉及数据库的话,就是把对应的txt里的信息用IO流读出来,存在map中,key是单词,value是词条信息,直接用map.get(“用户单词”);
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流