java - error on jMenuItem.addMouseListener(this) -
i tried add actionlistener jmenuitems right click. seen many example use item.addactionlistener(this) add listener jmenuitem
jmenuitem item; item.addactionlistener(this); but tried out , getting error
method addactionlistener(actionlistener) in type abstractbutton not applicable arguements (popupmenuexample) 
code
import java.awt.event.actionevent; import java.awt.event.actionlistener; import java.awt.event.mouseadapter; import java.awt.event.mouseevent; import javax.swing.imageicon; import javax.swing.jframe; import javax.swing.jmenuitem; import javax.swing.jpanel; import javax.swing.jpopupmenu; import javax.swing.border.bevelborder; import javax.swing.event.popupmenuevent; import javax.swing.event.popupmenulistener; public class popupmenuexample extends jpanel { public jpopupmenu popup; public popupmenuexample() { popup = new jpopupmenu(); jmenuitem item; popup.add(item = new jmenuitem("add")); item.sethorizontaltextposition(jmenuitem.right); item.addactionlistener(this); <-- error! popup.add(item = new jmenuitem("delete")); item.sethorizontaltextposition(jmenuitem.right); item.addactionlistener(this); <-- error! popup.setlabel("justification"); popup.setborder(new bevelborder(bevelborder.raised)); popup.addpopupmenulistener(new popupprintlistener()); addmouselistener(new mousepopuplistener()); } // inner class check whether mouse events popup trigger class mousepopuplistener extends mouseadapter { public void mousepressed(mouseevent e) { checkpopup(e); } public void mouseclicked(mouseevent e) { checkpopup(e); } public void mousereleased(mouseevent e) { checkpopup(e); } private void checkpopup(mouseevent e) { if (e.ispopuptrigger()) { popup.show(popupmenuexample.this, e.getx(), e.gety()); } } } public static void main(string s[]) { jframe frame = new jframe("popup menu example"); frame.setdefaultcloseoperation(jframe.exit_on_close); frame.setcontentpane(new popupmenuexample()); frame.setsize(300, 300); frame.setvisible(true); } } edited(adding jmenuitem in jpopupmenu)
table.addmouselistener(new mouseadapter() { @override public void mousereleased(mouseevent e) { if (e.getbutton() == java.awt.event.mouseevent.button3) { system.out.println("right click"); int r = table.rowatpoint(e.getpoint()); if (r >= 0 && r < table.getrowcount()) { table.setrowselectioninterval(r, r); } else { table.clearselection(); } int rowindex = table.getselectedrow(); if (rowindex < 0) return; if (e.ispopuptrigger() && e.getcomponent() instanceof jtable ) { jpopupmenu popup = new jpopupmenu(); jmenuitem item; popup.add(item = new jmenuitem("add")); item.sethorizontaltextposition(jmenuitem.right); item.addmouselistener(this); popup.add(item = new jmenuitem("delete")); item.sethorizontaltextposition(jmenuitem.right);; popup.setcomponentpopupmenu(popup); popup.show(e.getcomponent(), e.getx(), e.gety()); } } }
this jpanel not implement actionlistener...
have @ how write action listeners , how use menus , might become farmiluar how use actions
you can use jcomponent#setcomponentpopupmenu instead of using mouselistener , should making sure building uis within context of event dispatching thread, have @ initial threads more details
popup example
works fine me...
jtable table = new jtable(model); jpopupmenu popupmenu = new jpopupmenu(); jmenuitem mi = popupmenu.add("boo!"); mi.addactionlistener(new actionlistener() { @override public void actionperformed(actionevent e) { system.out.println("ah, ghost!"); } }); table.setcomponentpopupmenu(popupmenu);
Comments
Post a Comment