A JComboBox JComponent এর একটি সাবক্লাস ক্লাস এবং এটি একটি টেক্সট ফিল্ডের সংমিশ্রণ এবং একটি ড্রপ-ডাউন তালিকা যেখান থেকে ব্যবহারকারী একটি মান চয়ন করতে পারেন৷ . একটি JComboBox একটি ActionListener, ChangeListener, তৈরি করতে পারে এবং আইটেম লিসেনার ইন্টারফেস যখন ব্যবহারকারী একটি কম্বো বক্সে কাজ করে।
আমরা স্বতঃ-সম্পূর্ণ JComboBox বাস্তবায়ন করতে পারি যখন ব্যবহারকারী একটি কম্বো বক্সের কাস্টমাইজেশন ব্যবহার করে একটি কীবোর্ড থেকে একটি ইনপুট মান টাইপ করে (AutoCompleteComboBox ) JComboBox প্রসারিত করে ক্লাস।
উদাহরণ
import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.plaf.basic.*; public class AutoCompleteComboBoxTest extends JFrame { private JComboBox comboBox; public AutoCompleteComboBoxTest() { setTitle("AutoCompleteComboBox"); String[] countries = new String[] {"india", "australia", "newzealand", "england", "germany", "france", "ireland", "southafrica", "bangladesh", "holland", "america"}; comboBox = new AutoCompleteComboBox(countries); add(comboBox, BorderLayout.NORTH); setSize(400, 300); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null); setVisible(true); } public static void main(String []args) { new AutoCompleteComboBoxTest(); } } // Implementtion of AutoCompleteComboBox class AutoCompleteComboBox extends JComboBox { public int caretPos = 0; public JTextField tfield = null; public AutoCompleteComboBox(final Object countries[]) { super(countries); setEditor(new BasicComboBoxEditor()); setEditable(true); } public void setSelectedIndex(int index) { super.setSelectedIndex(index); tfield.setText(getItemAt(index).toString()); tfield.setSelectionEnd(caretPos + tfield.getText().length()); tfield.moveCaretPosition(caretPos); } public void setEditor(ComboBoxEditor editor) { super.setEditor(editor); if(editor.getEditorComponent() instanceof JTextField) { tfield = (JTextField) editor.getEditorComponent(); tfield.addKeyListener(new KeyAdapter() { public void keyReleased(KeyEvent ke) { char key = ke.getKeyChar(); if (!(Character.isLetterOrDigit(key) || Character.isSpaceChar(key) )) return; caretPos = tfield.getCaretPosition(); String text=""; try { text = tfield.getText(0, caretPos); } catch (javax.swing.text.BadLocationException e) { e.printStackTrace(); } for (int i=0; i < getItemCount(); i++) { String element = (String) getItemAt(i); if (element.startsWith(text)) { setSelectedIndex(i); return; } } } }); } } }
আউটপুট