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;
}
}
}
});
}
}
} আউটপুট
