Java 如何使用jtextfield接受jcombo框自动建议中的小写和大写

Java 如何使用jtextfield接受jcombo框自动建议中的小写和大写,java,swing,jcombobox,jtextfield,Java,Swing,Jcombobox,Jtextfield,我为comboauto创建了一个类,用于从组合框中的mysql数据库中获取ItemName。我在jcombobox中做了一个自动建议,将jtextfield指定为默认值,以获取jtextfield中的文本。当我在jcombobox中键入文本U(它应该自动建议并给出小写和大写的U值)时。在输入文本时,我无法同时获得大小写值。请帮帮我,我在这里应该用什么方法 This is the code i used public class comboauto extends javax.swing.JFra

我为comboauto创建了一个类,用于从组合框中的mysql数据库中获取ItemName。我在jcombobox中做了一个自动建议,将jtextfield指定为默认值,以获取jtextfield中的文本。当我在jcombobox中键入文本U(它应该自动建议并给出小写和大写的U值)时。在输入文本时,我无法同时获得大小写值。请帮帮我,我在这里应该用什么方法

This is the code i used
public class comboauto extends javax.swing.JFrame{
             Vector Tmpv1=new Vector();
             Statement TmpSqlStmnt;
             ResultSet TmpSqlRs;
             Connection Tmpcon;
             String TmpCateId;
             JTextField Txt01;
             TreeMap TmpMap=new TreeMap();

        public comboauto() {
               initComponents();
        }

        public void FRM_CBX_AUTOSUGGEST() {
               Txt01=(JTextField)Cbx01.getEditor().getEditorComponent();
                Txt01.addKeyListener(new KeyAdapter() {
               public void keyTyped(KeyEvent e)
                {
                       EventQueue.invokeLater(new Runnable()
                     {
                           public void run(){
                                  String Tmptext =Txt01.getText();
                                  if(Tmptext.length()==0)
                                   {
                                        Cbx01.hidePopup();
                                        setModel(new DefaultComboBoxModel(Tmpv1), "");
                                     }
                                     else{
                                       DefaultComboBoxModel m = getSuggestedModel(Tmpv1, Tmptext);
                                       if(m.getSize()==0 ) {
                                       Cbx01.hidePopup();
                                         }
                                        else{
                                                  setModel(m, Tmptext);
                                                 Cbx01.showPopup();

                                             }
                                         }
                                 }
                             });
                   }                        
            });
             try{
                    Class.forName("com.mysql.jdbc.Driver");
                    Tmpcon =DriverManager.getConnection("jdbc:mysql://localhost:3306/project","root","root");
                    TmpSqlStmnt=Tmpcon.createStatement();
                    TmpSqlRs=TmpSqlStmnt.executeQuery ("SELECT CateId,CateName FROM Cust_Masterrecord ORDER BY CateName");
                    System.out.println("DB Connected");
                    TmpSqlRs.first();
                    do {
                            String TmpName=TmpSqlRs.getString("CateName");
                            Cbx01.setSelectedIndex(-1);
                            Cbx01.addItem(TmpName);
                            int TmpCateId=TmpSqlRs.getInt("CateId");
                            Tmpv1.addElement(TmpSqlRs.getString("CateName"));
                            TmpMap.put(TmpName, TmpCateId);

                           Cbx01.addItemListener(new ItemListener()
                            {
                            public void itemStateChanged(ItemEvent e) {
                                   if (e.getStateChange() == e.SELECTED) {

                                       Lbl01.setText(TmpMap.get(Cbx01.getSelectedItem()).toString());
                                  }
                                }
                            });
                    }while(TmpSqlRs.next());
    }catch(Exception e){
    System.out.println(e);
  }
  }
private boolean hide_flag = false;
       private void setModel(DefaultComboBoxModel mdl, String str)
       {
        Cbx01.setModel(mdl);
        Cbx01.setSelectedIndex(-1);
        Txt01.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[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
               comboauto Tmpobj1= new comboauto();
               Tmpobj1.FRM_CBX_AUTOSUGGEST();
               Tmpobj1.setVisible(true);


            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JComboBox Cbx01;
    private javax.swing.JLabel Lbl01;
    // End of variables declaration                   

}
这是我使用的代码
公共类comboauto扩展javax.swing.JFrame{
向量Tmpv1=新向量();
报表TMPSQLSTNT;
结果设置TmpSqlRs;
连接Tmpcon;
字符串TmpCateId;
JTextField Txt01;
TreeMap TmpMap=新的TreeMap();
公共comboauto(){
初始化组件();
}
公共无效FRM_CBX_AUTOSUGGEST(){
Txt01=(JTextField)Cbx01.getEditor().getEditorComponent();
addKeyListener(新的KeyAdapter(){
public void keyTyped(KeyEvent e)
{
invokeLater(新的Runnable()
{
公开募捐{
字符串Tmptext=Txt01.getText();
如果(Tmptext.length()==0)
{
Cbx01.hidePopup();
setModel(新的DefaultComboxModel(Tmpv1),“”);
}
否则{
DefaultComboxModel m=getSuggestedModel(Tmpv1,Tmptext);
如果(m.getSize()==0){
Cbx01.hidePopup();
}
否则{
setModel(m,Tmptext);
Cbx01.showPopup();
}
}
}
});
}                        
});
试一试{
Class.forName(“com.mysql.jdbc.Driver”);
Tmpcon=DriverManager.getConnection(“jdbc:mysql://localhost:3306/project“,”根“,”根“);
TmpSqlStmnt=Tmpcon.createStatement();
TmpSqlRs=TmpSqlStmnt.executeQuery(“按CateName从客户主记录订单中选择CateId、CateName”);
System.out.println(“DB连接”);
TmpSqlRs.first();
做{
字符串TmpName=TmpSqlRs.getString(“CateName”);
Cbx01。设置选定的索引(-1);
Cbx01.附加项(TmpName);
int TmpCateId=TmpSqlRs.getInt(“CateId”);
Tmpv1.addElement(TmpSqlRs.getString(“CateName”);
TmpMap.put(TmpName,TmpCateId);
Cbx01.addItemListener(新的ItemListener()
{
公共无效itemStateChanged(ItemEvent e){
如果(e.getStateChange()==e.SELECTED){
Lbl01.setText(TmpMap.get(Cbx01.getSelectedItem()).toString());
}
}
});
}while(TmpSqlRs.next());
}捕获(例外e){
系统输出打印ln(e);
}
}
私有布尔隐藏标志=false;
私有void setModel(defaultComboboxModelMDL,String str)
{
Cbx01.setModel(mdl);
Cbx01。设置选定的索引(-1);
Txt01.setText(str);
}
私有静态DefaultComboxModel getSuggestedModel(java.util.List列表,字符串文本){
DefaultComboxModel m=新的DefaultComboxModel();
用于(字符串s:列表){
如果(以(文本)开头)m.附录;
}
返回m;
}
公共静态void main(字符串参数[]){
invokeLater(new Runnable()){
公开募捐{
comboauto Tmpobj1=新comboauto();
Tmpobj1.FRM_CBX_AUTOSUGGEST();
Tmpobj1.setVisible(true);
}
});
}
//变量声明-不修改
私有javax.swing.jcombox Cbx01;
私有javax.swing.JLabel Lbl01;
//变量结束声明
}

在getSuggestedModel方法中使用。(大写两个字符串。小写也可以。)

也许您可以使用

boolean equalsIgnoreCase(字符串另一个字符串) -将此字符串与另一个字符串进行比较,忽略大小写注意事项


你确定KeyListener已经被触发了吗?@javasiplease请学习java命名约定并坚持它们-现在经过再三考虑,这是不好的。你不能比较整个字符串。是的,但你的回答并不意味着这一点。它工作得很好。我在两个地方使用了String.toUpperCase(),第一个地方是获取resultset字符串值,第二个地方是获取文本。非常感谢。