java - Editable JComboBox KeyPressed not working -
have code designed editable jcombobox
listen keypressed
event , show message key pressed. have no idea why not working. as beginner might have gone wrong logically/conceptually.
so, request suggestions how construct code, works.
code
import javax.swing.*; import java.awt.*; public class testejcbx extends jframe { jcombobox jcbx = new jcombobox(); public testejcbx() { super("editable jcombobox"); jcbx.seteditable(true); getcontentpane().setlayout(new flowlayout()); getcontentpane().add(jcbx); jcbx.addkeylistener(new java.awt.event.keyadapter() { public void keypressed(java.awt.event.keyevent evt) { jcbxkeypressed(evt); } }); setsize(300, 170); setvisible(true); } private void jcbxkeypressed(java.awt.event.keyevent evt) { joptionpane.showmessagedialog(null, "key pressed"); } public static void main(string argv[]) { new testejcbx(); } }
you shouldn't using keylistener sort of thing. rather if want detect changes combo box's editor component, extract , add documentlistener it:
import javax.swing.*; import javax.swing.event.documentevent; import javax.swing.event.documentlistener; import javax.swing.text.document; import java.awt.*; public class testejcbx extends jframe { jcombobox<string> jcbx = new jcombobox<>(); public testejcbx() { super("editable jcombobox"); setdefaultcloseoperation(jframe.dispose_on_close); jcbx.seteditable(true); getcontentpane().setlayout(new flowlayout()); getcontentpane().add(jcbx); jtextfield editorcomponent = (jtextfield) jcbx.geteditor() .geteditorcomponent(); document doc = editorcomponent.getdocument(); doc.adddocumentlistener(new documentlistener() { @override public void removeupdate(documentevent e) { system.out.println("text changed"); } @override public void insertupdate(documentevent e) { system.out.println("text changed"); } @override public void changedupdate(documentevent e) { system.out.println("text changed"); } }); pack(); setlocationrelativeto(null); setvisible(true); } public static void main(string argv[]) { new testejcbx(); } }
Comments
Post a Comment