Java Connection con=DriverManager.getConnection(“jdbc:mysql://localhost:3306/teste“,”根“,”); 语句stmt=con.createStatement(); 结果集rs=stmt.executeQuery(str); while(rs.next()){ str1=rs.getString(“nome”); 过滤器阵列。添加(str1); } }捕获(例外情况除外){ 系统输出打印项次(“错误”+ex); } 如果(filterArray.size()>0){ setModel(新的DefaultComboxModel(filterArray.toArray()); jCombox1.setSelectedItem(输入文本); jComboBox1.showPopup(); }否则{ jcombox1.hidePopup(); } }

Java Connection con=DriverManager.getConnection(“jdbc:mysql://localhost:3306/teste“,”根“,”); 语句stmt=con.createStatement(); 结果集rs=stmt.executeQuery(str); while(rs.next()){ str1=rs.getString(“nome”); 过滤器阵列。添加(str1); } }捕获(例外情况除外){ 系统输出打印项次(“错误”+ex); } 如果(filterArray.size()>0){ setModel(新的DefaultComboxModel(filterArray.toArray()); jCombox1.setSelectedItem(输入文本); jComboBox1.showPopup(); }否则{ jcombox1.hidePopup(); } },java,swing,jdbc,jcombobox,autosuggest,Java,Swing,Jdbc,Jcombobox,Autosuggest,您可以从中参考以下工作代码。希望这就是你要找的 import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing.*; public class AutoSuggest extends JPanel{ private final JTextField tf; private final JComboBox combo = new JComboBox(); private

您可以从中参考以下工作代码。希望这就是你要找的

import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;

public class AutoSuggest extends JPanel{
    private final JTextField tf;
    private final JComboBox combo = new JComboBox();
    private final Vector<String> v = new Vector<String>();
    public AutoSuggest() {
        super(new BorderLayout());
        combo.setEditable(true);
        tf = (JTextField) combo.getEditor().getEditorComponent();
        tf.addKeyListener(new KeyAdapter() {
                public void keyTyped(KeyEvent e) {
               EventQueue.invokeLater(new Runnable() {
            public void run() {
                String text = tf.getText();
                        if(text.length()==0) {
                    combo.hidePopup();
                    setModel(new DefaultComboBoxModel(v), "");
                }else{
                    DefaultComboBoxModel m = getSuggestedModel(v, text);
                    if(m.getSize()==0 || hide_flag) {
                          combo.hidePopup();
                        hide_flag = false;
                    }else{
                        setModel(m, text);
                        combo.showPopup();
                    }
                }
            }
        });
            }
                public void keyPressed(KeyEvent e) {
               String text = tf.getText();
         int code = e.getKeyCode();
             if(code==KeyEvent.VK_ENTER) {
            if(!v.contains(text)) {
                v.addElement(text);
                Collections.sort(v);
                setModel(getSuggestedModel(v, text), text);
            }
            hide_flag = true; 
        }else if(code==KeyEvent.VK_ESCAPE) {
            hide_flag = true; 
        }else if(code==KeyEvent.VK_RIGHT) {
            for(int i=0;i<v.size();i++) {
                String str = v.elementAt(i);
                if(str.startsWith(text)) {
                    combo.setSelectedIndex(-1);
                    tf.setText(str);
                    return;
                }
            }
        }
            }
      });
        String[] countries = {"Afghanistan", "Albania", "Algeria", "Andorra", "Angola","Argentina"
,"Armenia","Austria","Bahamas","Bahrain", "Bangladesh","Barbados", "Belarus","Belgium",
"Benin","Bhutan","Bolivia","Bosnia & Herzegovina","Botswana","Brazil","Bulgaria",
"Burkina Faso","Burma","Burundi","Cambodia","Cameroon","Canada", "China","Colombia",
"Comoros","Congo","Croatia","Cuba","Cyprus","Czech Republic","Denmark", "Georgia",
"Germany","Ghana","Great Britain","Greece","Hungary","Holland","India","Iran","Iraq",
"Italy","Somalia", "Spain", "Sri Lanka", "Sudan","Suriname", "Swaziland","Sweden",
"Switzerland", "Syria","Uganda","Ukraine","United Arab Emirates","United Kingdom",
"United States","Uruguay","Uzbekistan","Vanuatu","Venezuela","Vietnam",
"Yemen","Zaire","Zambia","Zimbabwe"};
          for(int i=0;i<countries.length;i++){
                  v.addElement(countries[i]);
          }
        setModel(new DefaultComboBoxModel(v), "");
        JPanel p = new JPanel(new BorderLayout());
        p.setBorder(BorderFactory.createTitledBorder("AutoSuggestion Box"));
        p.add(combo, BorderLayout.NORTH);
        add(p);
        setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
        setPreferredSize(new Dimension(300, 150));
    }
    private boolean hide_flag = false;
       private void setModel(DefaultComboBoxModel mdl, String str) {
        combo.setModel(mdl);
        combo.setSelectedIndex(-1);
        tf.setText(str);
    }
private static DefaultComboBoxModel getSuggestedModel(java.util.List<String> list, String text) {
        DefaultComboBoxModel m = new DefaultComboBoxModel();
        for(String s: list) {
            if(s.startsWith(text)) m.addElement(s);
        }
        return m;
    }
    public static void main(String[] args) {
       JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.getContentPane().add(new AutoSuggest());
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
    }
import java.awt.*;
导入java.awt.event.*;
导入java.util.*;
导入javax.swing.*;
公共类AutoSuggest扩展了JPanel{
私人最终JTextField tf;
私有最终JComboBox组合=新JComboBox();
私有最终向量v=新向量();
公共自动建议(){
超级(新边框布局());
combo.setEditable(真);
tf=(JTextField)combo.getEditor().getEditorComponent();
addKeyListener(新的KeyAdapter(){
public void keyTyped(KeyEvent e){
invokeLater(新的Runnable(){
公开募捐{
String text=tf.getText();
如果(text.length()==0){
combo.hidePopup();
setModel(新的DefaultComboxModel(v),“”);
}否则{
DefaultComboxModel m=getSuggestedModel(v,文本);
if(m.getSize()==0 | |隐藏|标志){
combo.hidePopup();
hide_flag=false;
}否则{
setModel(m,text);
combo.showPopup();
}
}
}
});
}
按下公共无效键(按键事件e){
String text=tf.getText();
int code=e.getKeyCode();
if(code==KeyEvent.VK_ENTER){
如果(!v.contains(text)){
v、 增编(文本);
收集.分类(五);
setModel(getSuggestedModel(v,text),text);
}
hide_flag=true;
}else if(code==KeyEvent.VK_ESCAPE){
hide_flag=true;
}else if(code==KeyEvent.VK_RIGHT){

对于(int i=0;我的第一个建议是不要使用KeyListener,而是使用DocumentListener来监视对字段的更改我还建议您查看SwingLabs AutoComplete支持使用KeyListener是非常不鼓励的,因为它没有考虑到当用户将文本粘贴到字段我发布的代码AutoSu时会发生什么ggest工作得很好,他从我的数据库中获取插入的名称,并在我搜索时给我一个自动建议,但我不知道如何在“private void JCombox1ActionPerformed(java.awt.event.ActionEvent evt){}上的另一个类Principal.java上实现`编写一个自定义方法来获取具有过滤数据的模型并使用该模型。请参考上述代码中如何使用getSuggestedModel(..)。
private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {                                           

    final JTextField textfield = (JTextField) jComboBox1.getEditor().getEditorComponent();
    textfield.addKeyListener(new KeyAdapter() {
        public void keyReleased(KeyEvent ke) {
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    comboFilter(textfield.getText());
                }
            });
        }
    });

}                                          


public void comboFilter(String enteredText) {
    List<String> filterArray = new ArrayList<String>();

    String str1 = "";

    try {

        String str = "SELECT * FROM pessoa WHERE nome LIKE '" + enteredText + "%'";

        Class.forName("com.mysql.jdbc.Driver");
        Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/teste", "root", "");
        Statement stmt = con.createStatement();
        ResultSet rs = stmt.executeQuery(str);
        while (rs.next()) {

            str1 = rs.getString("nome");
            filterArray.add(str1);

        }

    } catch (Exception ex) {
        System.out.println("error" + ex);
    }

    if (filterArray.size() > 0) {
        jComboBox1.setModel(new DefaultComboBoxModel(filterArray.toArray()));
        jComboBox1.setSelectedItem(enteredText);
        jComboBox1.showPopup();
    } else {
        jComboBox1.hidePopup();
    }
}
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;

public class AutoSuggest extends JPanel{
    private final JTextField tf;
    private final JComboBox combo = new JComboBox();
    private final Vector<String> v = new Vector<String>();
    public AutoSuggest() {
        super(new BorderLayout());
        combo.setEditable(true);
        tf = (JTextField) combo.getEditor().getEditorComponent();
        tf.addKeyListener(new KeyAdapter() {
                public void keyTyped(KeyEvent e) {
               EventQueue.invokeLater(new Runnable() {
            public void run() {
                String text = tf.getText();
                        if(text.length()==0) {
                    combo.hidePopup();
                    setModel(new DefaultComboBoxModel(v), "");
                }else{
                    DefaultComboBoxModel m = getSuggestedModel(v, text);
                    if(m.getSize()==0 || hide_flag) {
                          combo.hidePopup();
                        hide_flag = false;
                    }else{
                        setModel(m, text);
                        combo.showPopup();
                    }
                }
            }
        });
            }
                public void keyPressed(KeyEvent e) {
               String text = tf.getText();
         int code = e.getKeyCode();
             if(code==KeyEvent.VK_ENTER) {
            if(!v.contains(text)) {
                v.addElement(text);
                Collections.sort(v);
                setModel(getSuggestedModel(v, text), text);
            }
            hide_flag = true; 
        }else if(code==KeyEvent.VK_ESCAPE) {
            hide_flag = true; 
        }else if(code==KeyEvent.VK_RIGHT) {
            for(int i=0;i<v.size();i++) {
                String str = v.elementAt(i);
                if(str.startsWith(text)) {
                    combo.setSelectedIndex(-1);
                    tf.setText(str);
                    return;
                }
            }
        }
            }
      });
        String[] countries = {"Afghanistan", "Albania", "Algeria", "Andorra", "Angola","Argentina"
,"Armenia","Austria","Bahamas","Bahrain", "Bangladesh","Barbados", "Belarus","Belgium",
"Benin","Bhutan","Bolivia","Bosnia & Herzegovina","Botswana","Brazil","Bulgaria",
"Burkina Faso","Burma","Burundi","Cambodia","Cameroon","Canada", "China","Colombia",
"Comoros","Congo","Croatia","Cuba","Cyprus","Czech Republic","Denmark", "Georgia",
"Germany","Ghana","Great Britain","Greece","Hungary","Holland","India","Iran","Iraq",
"Italy","Somalia", "Spain", "Sri Lanka", "Sudan","Suriname", "Swaziland","Sweden",
"Switzerland", "Syria","Uganda","Ukraine","United Arab Emirates","United Kingdom",
"United States","Uruguay","Uzbekistan","Vanuatu","Venezuela","Vietnam",
"Yemen","Zaire","Zambia","Zimbabwe"};
          for(int i=0;i<countries.length;i++){
                  v.addElement(countries[i]);
          }
        setModel(new DefaultComboBoxModel(v), "");
        JPanel p = new JPanel(new BorderLayout());
        p.setBorder(BorderFactory.createTitledBorder("AutoSuggestion Box"));
        p.add(combo, BorderLayout.NORTH);
        add(p);
        setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
        setPreferredSize(new Dimension(300, 150));
    }
    private boolean hide_flag = false;
       private void setModel(DefaultComboBoxModel mdl, String str) {
        combo.setModel(mdl);
        combo.setSelectedIndex(-1);
        tf.setText(str);
    }
private static DefaultComboBoxModel getSuggestedModel(java.util.List<String> list, String text) {
        DefaultComboBoxModel m = new DefaultComboBoxModel();
        for(String s: list) {
            if(s.startsWith(text)) m.addElement(s);
        }
        return m;
    }
    public static void main(String[] args) {
       JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.getContentPane().add(new AutoSuggest());
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
    }