I created this method:
public void comboS() {
ResultSet rset = null;
String sch = ((JTextField) ComboItemName.getEditor().getEditorComponent()).getText();
try {
rset = new JDBC.DB().getData("SELECT * FROM item_reg WHERE id LIKE '" + sch + "%';");
} catch (Exception e) {
System.out.println(e);
}
ComboItemName.removeAllItems();
try {
while (rset.next()) {
String item = rset.getString("id");
ComboItemName.addItem(item);
}
} catch (SQLException ex) {
Logger.getLogger(jfilechooser.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.println(sch);
ComboItemName.setSelectedItem(null);
ComboItemName.setPopupVisible(true);
((JTextField) ComboItemName.getEditor().getEditorComponent()).setText(sch);
}
I call this method in actionPerformed of the JComboBox(ComboItemName)..When I type HDD and hit enter it shows all the ids of hard disks in database..But I want this to be appear while I typing HDD.I think for that a keyEvent should be apply to the method like this.
public void comboS(java.awt.event.KeyEvent evt)
But I don't know how to call this method and where in combo box.give me some help for this.thanks. Like this

Use DocumentListener on your editor component for that purposes, here is example with that:
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.text.BadLocationException;
import javax.swing.text.JTextComponent;
public class Example extends JFrame {
public Example() {
JComboBox comboBox = new JComboBox(new String[]{"1","2"});
comboBox.setEditable(true);
((JTextComponent)comboBox.getEditor().getEditorComponent()).getDocument().addDocumentListener(new DocumentListener() {
@Override
public void removeUpdate(DocumentEvent arg0) {
validateHDD(arg0);
}
@Override
public void insertUpdate(DocumentEvent arg0) {
validateHDD(arg0);
}
@Override
public void changedUpdate(DocumentEvent arg0) {
validateHDD(arg0);
}
private void validateHDD(DocumentEvent arg0) {
try {
String text = arg0.getDocument().getText(0, arg0.getDocument().getLength());
if(text.equals("HDD")){
System.out.println("HDD entered");
//call your method here
}
} catch (BadLocationException e) {
e.printStackTrace();
}
}
});
add(comboBox);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
Example frame = new Example();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}
validateHDD validate if you entered HDD into editor of JComboBox, and then executes some logic if it is true.
To attach a KeyListener on a ComboBox, first of all your Combo must be editable.
jComboBox1.setEditable(true);
Then just attach the KeyListener like this:
jComboBox1.getEditor().getEditorComponent().addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
System.out.println(e.getKeyChar() + " KEY_TYPED DETECTED. \n");
}
@Override
public void keyPressed(KeyEvent e) {
System.out.println(e.getKeyChar() + " KEY_PRESS DETECTED. \n");
}
@Override
public void keyReleased(KeyEvent e) {
System.out.println(e.getKeyChar() + " KEY_RELEASE DETECTED. \n");
}
});

As simple as that :)
UPDATE
As @alex2410 spotted, it would be best to implement this with DocumentListener instead. Here is how to:
final JTextComponent tc = (JTextComponent) jComboBox1.getEditor().getEditorComponent();
tc.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void insertUpdate(DocumentEvent e) {
System.out.println("Combo Value is: " + tc.getText() + " . \n");
}
@Override
public void removeUpdate(DocumentEvent e) {
System.out.println("Combo Value is: " + tc.getText() + " . \n");
}
@Override
public void changedUpdate(DocumentEvent e) {
System.out.println("Combo Value is: " + tc.getText() + " . \n");
}
});

As a side note, please stick to Java code Conventions
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With