Java 带有actionperformed actionlistner的文本字段

Java 带有actionperformed actionlistner的文本字段,java,swing,jdbc,jlabel,jtextfield,Java,Swing,Jdbc,Jlabel,Jtextfield,我有一个jTextField和一个jLabel。我希望在用户完成键入后,自动将数据从数据库获取到标签 subcode_txt.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { Object obj=e.getSource(); if(obj==subcode_txt){ jst=su

我有一个jTextField和一个jLabel。我希望在用户完成键入后,自动将数据从数据库获取到标签

subcode_txt.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            Object obj=e.getSource();
            if(obj==subcode_txt){
            jst=subcode_txt.getText();
            try{

            rs=st.executeQuery("Select * from facultydtls where sub_code like '"+jst+"'");
            rs.next();
            faculty_lab.setText(rs.getString("f_name"));
            sem_lab.setText(rs.getString("sem"));
            subject_lab.setText(rs.getString("sub"));
            department_lab.setText(rs.getString("dept"));

            rs.close();

        }
        catch(Exception ewt){
            JOptionPane.showMessageDialog(null,"Invalid Subject Code");
        }
            }
        }
    });
  • 如果您想对用户输入做出反应,那么
    DocumentListener
    keystener
  • 您可以选择一个
    ActionListener
    ,当用户点击ENTER时会触发它
  • 您不应该在事件分派线程上执行数据库查询。使用辅助线程代替。有关更多信息,请参阅
  • close
    语句应该放在
    finally
    块中
  • 话虽如此,你到底在问什么

  • 如果您想对用户输入做出反应,那么
    DocumentListener
    keystener
  • 您可以选择一个
    ActionListener
    ,当用户点击ENTER时会触发它
  • 您不应该在事件分派线程上执行数据库查询。使用辅助线程代替。有关更多信息,请参阅
  • close
    语句应该放在
    finally
    块中
  • 也就是说,您到底在问什么?

    在Swing中处理
    JTextComponents
    的文本事件时,使用是首选的方法

    数据库查询需要大量资源,应该在外部执行,以防止UI“冻结”。在本章中,请查看如何使用
    SwingWorker

    请注意,为每个
    DocumentEvent
    加载数据可能会向数据库发送大量不必要的请求。有两种可能的解决方案:

    • 使用框架(例如-优化加载数据)进行数据缓存
    • 虽然与您的要求有些不同,但当用户提供完整的
      字符串时,您可以使用load
      JButton
      来加载数据
    更新:

    短期内:

    向查询中添加SQL通配符以匹配部分字符串:

    st.executeQuery("Select * from facultydtls where sub_code like '%" + jst + "%'");
    
    长期来看:

    使用
    PreparedStatement
    。它有以下好处:

    • 防止SQL注入攻击,特别是在用户可以输入作为SQL查询一部分的字符串的情况下
    • PreparedStatement
      占位符字符将使用任何必需的字符串引号
      • 在Swing中处理
        JTextComponents
        的文本事件时,使用

        数据库查询需要大量资源,应该在外部执行,以防止UI“冻结”。在本章中,请查看如何使用
        SwingWorker

        请注意,为每个
        DocumentEvent
        加载数据可能会向数据库发送大量不必要的请求。有两种可能的解决方案:

        • 使用框架(例如-优化加载数据)进行数据缓存
        • 虽然与您的要求有些不同,但当用户提供完整的
          字符串时,您可以使用load
          JButton
          来加载数据
        更新:

        短期内:

        向查询中添加SQL通配符以匹配部分字符串:

        st.executeQuery("Select * from facultydtls where sub_code like '%" + jst + "%'");
        
        长期来看:

        使用
        PreparedStatement
        。它有以下好处:

        • 防止SQL注入攻击,特别是在用户可以输入作为SQL查询一部分的字符串的情况下
        • PreparedStatement
          占位符字符将使用任何必需的字符串引号

        我是用DocumentListner做的。但是每次我输入一个letter@SubratPatnaik文本字段内容的每次更新都会触发
        DocumentListener
        。如果您只想在用户点击enter键时做出反应,则需要一个
        ActionListener
        ,即使在使用DocumentListener后,我也会遇到同样的问题。你能给我举个与我的问题相关的例子吗……谢谢你,我是用DocumentListner做的。但是每次我输入一个letter@SubratPatnaik文本字段内容的每次更新都会触发
        DocumentListener
        。如果您只想在用户点击enter键时做出反应,则需要一个
        ActionListener
        ,即使在使用DocumentListener后,我也会遇到同样的问题。你能给我举个与我的问题相关的例子吗…谢谢You@SubratPatnaik我认为您需要添加SQL通配符。请参阅更新。即使使用DocumentListener,我也有同样的问题。你能给我举个与我的问题相关的例子吗…谢谢你,即使在使用DocumentListener之后,我也有同样的问题。你能给我举个与我的问题相关的例子吗…谢谢You@SubratPatnaik我认为您需要添加SQL通配符。请参阅更新。即使使用DocumentListener,我也有同样的问题。你能给我举个与我的问题相关的例子吗…谢谢你,即使在使用DocumentListener之后,我也有同样的问题。你能给我举个与我的问题相关的例子吗…谢谢