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) 

error

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

Popular posts from this blog

java - How to specify maven bin in eclipse maven plugin? -

single sign on - Logging into Plone site with credentials passed through HTTP -

php - Why does AJAX not process login form? -