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);
}
}