怎么在java窗体程序文本框中实现输入单词在数据库中查询?

橙汁龙 2021-12-13 11:34:35

package com.czl.dict;

import java.awt.*;
import java.sql.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import javax.swing.JOptionPane;

/*
	菜单窗口
 */
class DataWindow extends JFrame implements ActionListener {
    JFrame topFrame;
    JDesktopPane desktop;
    FileDialog filedialog_save; //声明文件对话框
    JTextField englishtext;//单行输入文本框
    JTextArea chinesetext;//多行输入文本框
    JButton b1, b2, b3, b4;
    JLabel label;
    JMenuBar mbar;
    JMenu mfile, medit;
    JMenuItem edic, cdic, back_data, quit, addedit, modedit, deledit;


    DataWindow() {
        super("英汉小词典");
        this.setBounds(250, 250, 600, 400);
        this.setVisible(true);

        getContentPane().add(new JScrollPane(chinesetext));
        mbar = new JMenuBar();
        setJMenuBar(mbar);
        mbar.setOpaque(true);
        mfile = new JMenu("文件");
        medit = new JMenu("编辑");
        mbar.add(mfile);
        mbar.add(medit);
        edic = new JMenuItem("英汉词典");
        cdic = new JMenuItem("汉英词典");
        back_data = new JMenuItem("备份词库");
        quit = new JMenuItem("  退出");//文件菜单
        addedit = new JMenuItem("添加词汇");
        modedit = new JMenuItem("修改词汇");
        deledit = new JMenuItem("删除词汇");//编辑菜单
        mfile.add(edic);
        mfile.add(cdic);
        mfile.add(back_data);
        mfile.addSeparator();
        mfile.add(quit);  //mfile
        medit.add(addedit);
        medit.add(modedit);
        medit.add(deledit);  //medit
        edic.addActionListener(this);
        cdic.addActionListener(this);
        quit.addActionListener(this);
        addedit.addActionListener(this);
        modedit.addActionListener(this);
        deledit.addActionListener(this);
        englishtext = new JTextField(16);
        englishtext.setFont(new Font("", 15, 15));
        chinesetext = new JTextArea(8, 15);
        chinesetext.setEditable(false);
        chinesetext.setFont(new Font("", 25, 25));
        b1 = new JButton("查询");
        b2 = new JButton("添加");
        b3 = new JButton("修改");
        b4 = new JButton("刪除");
        JPanel p1 = new JPanel(), p2 = new JPanel();//添加面板
        label = new JLabel("输入要查询的英语单词:");
        label.setFont(new Font("隶书", 20, 20));
        p1.add(label);
        p1.add(englishtext);
        p1.add(b1);
        p2.add(b2);
        p2.add(b3);
        p2.add(b4);
        this.add(p1, "North");
        this.add(p2, "South");
        this.add(new JScrollPane(chinesetext), "Center");

        b1.addActionListener(this);
        b2.addActionListener(this);
        b3.addActionListener(this);
        b4.addActionListener(this);
        englishtext.addActionListener(this);
        back_data.addActionListener(this);
        filedialog_save = new FileDialog(this, "保存文件对话框", FileDialog.SAVE);

        filedialog_save.addWindowListener(new WindowAdapter()  //对话框增加适配器
        {
            public void windowClosing(WindowEvent e) {
                filedialog_save.setVisible(false);
            }
        });

        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
    }


    public void actionPerformed(ActionEvent e) //实现按钮监听
    {
        if (e.getSource() == b1 || e.getSource() == englishtext) {
            chinesetext.setText("");

            if (englishtext.getText().equals("")) {
                JOptionPane.showMessageDialog(this, "查询对象不能为空!", "警告",

                        JOptionPane.WARNING_MESSAGE);
            } else {

                try {
                    Listwords();
                } catch (SQLException ee) {
                }
            }
        } else if (e.getSource() == b2 || e.getSource() == addedit) {
            AddWin add = new AddWin();    //AddWin是添加窗口的类

        } else if (e.getSource() == b3 || e.getSource() == modedit) {
            ModifyWin modi = new ModifyWin(); //ModifyWin是修改窗口的类
        } else if (e.getSource() == b4 || e.getSource() == deledit) {
            DelWin del = new DelWin();   //DelWin是删除窗口的类
        } else if (e.getSource() == edic) //英汉
        {
            label.setText("输入要查询的英语单词:");
            b1.setVisible(true);
        } else if (e.getSource() == cdic) //汉英
        {
            label.setText("输入要查询的汉语意思:");
            b1.setVisible(true);
        } else if (e.getSource() == back_data) //备份
        {
            File fromfile = new File("english\\english.mdb");
            FileInputStream fis = null;
            filedialog_save.setVisible(true);
            try {
                fis = new FileInputStream(fromfile);
                int bytesRead;  //定义变量来存储输入流中读取出来的文件
                byte[] buf = new byte[4 * 1024];  //4K buffer
                File tofile = new File(filedialog_save.getDirectory(), filedialog_save.getFile());
                FileOutputStream fos = new FileOutputStream(tofile);
                while ((bytesRead = fis.read(buf)) != -1) {
                    fos.write(buf, 0, bytesRead);
                }
                fos.flush();
                fos.close();
                fis.close();
            } catch (IOException e2) {
            }
        } else if (e.getSource() == quit) //退出
        {
            System.exit(0);
        }

    }

    public void Listwords() throws SQLException  //实现查询功能
    {
        String cname, ename;
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (ClassNotFoundException e) {
        }
        //建立桥接器
        Connection Ex1Con = DriverManager.getConnection("jdbc:mysql://localhost:3306", "root", "chengzhilong");
        Statement Ex1Stmt = Ex1Con.createStatement();
        if (label.getText().equals("输入要查询的英语单词:")) {
            ResultSet rs = Ex1Stmt.executeQuery("SELECT * FROM words");
            while (rs.next()) {
                ename = rs.getString("word");
                cname = rs.getString("meaning");
                if (ename.equals(englishtext.getText())) {

//                    chinesetext.append(cname + '\n');
                }
            }
            Ex1Con.close();  //关闭数据库
            if (chinesetext.getText().equals("")) {
                JOptionPane.showMessageDialog(this, "查无此单词!", "警告",
                        JOptionPane.WARNING_MESSAGE);
            }
        } else if (label.getText().equals("输入要查询的汉语意思:")) {
            ResultSet rs = Ex1Stmt.executeQuery("SELECT * FROM words WHERE meaning LIKE '%" + englishtext.getText() + "%'");
            while (rs.next()) {
                ename = rs.getString("word");
                cname = rs.getString("meaning");
                chinesetext.append(ename + '\n');
            }
            Ex1Con.close();  //关闭数据库
            if (chinesetext.getText().equals("")) {
                JOptionPane.showMessageDialog(this, "查无此单词!", "警告",
                        JOptionPane.WARNING_MESSAGE);
            }
        }
    }
}

public class Dic {
    public static void main(String args[]) {
        JFrame.setDefaultLookAndFeelDecorated(true);
        DataWindow window = new DataWindow();
        window.validate();
        //	AddWin add = new AddWin();

    }
}




 现在遇到的问题是输出查询没有输出,不知道哪里错了,求解答

 

 

...全文
215 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

51,407

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧