2012-01-03 8 views
0

次のコードを使用してデータをコンボボックスに取得します。 JcomboboxをAuto suggest comboboxに変更する方法。それは、コンボボックスのアイテムフィールドに表示されるAで始まる単語をAを押すと意味します。JFrameで自動的に表示されるコンボボックス

public void combo(){ 

    try{ 
       GCS.GContnStr(); 
       TmpFlxTSt= GCS.GCotnStr.createStatement(); 
       String select = "Select StudName from studentmaster"; 
       TmpFlxTRs = TmpFlxTSt.executeQuery(select); 

        while(TmpFlxTRs.next()) 
        { 
         String TmpOb1=TmpFlxTRs.getString("StudName"); 
         TmpOb1.toString(); 
         cbx.addItem(TmpOb1); 
         cbx.setMaximumRowCount(1); 

        } 
+1

使用するようにしてくださいます。http://stackoverflow.com/questions/6674462/how-to-list-suggestions-to-whenをテキストフィールド内の型指定/ 6674524#6674524 –

答えて

1
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
import javax.swing.tree.*; 
import javax.swing.plaf.basic.*; 


class Test 
{ 
     private JComboBox_ cb = null; 


    public Test() { 
     JFrame fr=new JFrame("TEST ComboBox"); 
    JPanel p = new JPanel(); 
     p.setLayout(new BorderLayout()); 
     String[] ss = new String[] 
     { "112","1123","1124","1134", 
      "first", 
      "second", 
      "third", 
      "third 1 before", 
      "third 2", 
      "third 1 after", 
      "third quarter", 
      "fourth", 
      "fourth and more", 
      "fourth and more and more" 
     }; 
    fr.getContentPane().add(p); 
     cb = new JComboBox_(ss); 

     p.add("South",cb); 
     p.add("Center",new JButton("test combo box")); 
     fr.pack(); 
     fr.show(); 
    } 
    public static void main(String[] args) { 
     Test test=new Test(); 
    } 
} 

class JComboBox_ extends JComboBox { 
    public int caretPos=0; 
    public JTextField tf=null; 
    public JComboBox_(final Object items[]) { 
     super(items); 
     this.setEditor(new BasicComboBoxEditor()); 
     this.setEditable(true); 
    } 

    public void setSelectedIndex(int ind) { 
     super.setSelectedIndex(ind); 
     tf.setText(getItemAt(ind).toString()); 
     tf.setSelectionEnd(caretPos+tf.getText().length()); 
     tf.moveCaretPosition(caretPos); 
//  tf.setSelectionStart(caretPos); 
    } 
    public void setEditor(ComboBoxEditor anEditor) { 
     super.setEditor(anEditor); 
     if (anEditor.getEditorComponent() instanceof JTextField) { 
      tf=(JTextField)anEditor.getEditorComponent(); 
      tf.addKeyListener(new KeyAdapter() 
        { 
         public void keyReleased(KeyEvent ev) 
         { 
          char key=ev.getKeyChar(); 
          if (! (Character.isLetterOrDigit(key)||Character.isSpaceChar(key))) return; 
          String s = tf.getText(); 
          caretPos=tf.getCaretPosition(); 
          String text=""; 
          try { 
          text=tf.getText(0,caretPos); 
          } 
          catch (Exception ex) { 
          ex.printStackTrace(); 
          } 
          int n=getItemCount(); 
          for (int i=0; i<n; i++) { 
          int ind=((String)getItemAt(i)).indexOf(text); 
          if (ind==0) { 
           setSelectedIndex(i); 
           return; 
          } 
          } 
         } 
      }); 
     } 
    } 

} 
+0

これは良い名前です:クラスを上書きするための 'JComboBox_'ですか? –

+0

もちろん、それは悪名:-)に改名されます。 AutoSuggestCombobox – StanislavL

+0

あなたの答えを編集するのはどうですか? ;) –

関連する問題