i have added mouse listener jpanel in following way. outputed jpanel image painted on screen array of images.
public class newframe extend jframe { public new jframe() { statusbar = new jlabel("mouse outdide panel"); //displays events mouse add(statusbar,borderlayout.south); //add jframe mousehandler handler = new mousehandler(); jpanelmap.addmouselistener(handler); //add both mouse listeners jpanel jpanelmap.addmousemotionlistener(handler); } private class mousehandler implements mouselistener, mousemotionlistener { public void mouseclicked(mouseevent event) { statusbar.settext( string.format( "clicked @ [%d, %d]", event.getx() , event.gety() ) ); int x = event.getx(); int y = event.gety(); mapobject.updatedockorship(x, y,text); //updates selected icon on screen } public void mousepressed(mouseevent event) { } public void mousereleased(mouseevent event) { statusbar.settext( string.format( "released @ [%d, %d]", event.getx() , event.gety() ) ); int x = event.getx(); int y = event.gety(); /*this troublemaker, if delete line "clicks" work everywhere on jpanel. if leave in, clicks work in areas of jpanel, , other legitimate clicks recognized mousereleased in different area of jpanel */ mapbject.checkdocks(x,y,tempint); //trouble } public void mouseentered( mouseevent event ) { } public void mouseexited( mouseevent event ) { } public void mousedragged( mouseevent event ) { } public void mousemoved( mouseevent event ) { } } }
i have highlighted troubling statement in code given. implement line portions of map clickable click , other portions not clickable though still same click. think mouse click mouse click no matter click mouse listener or assuming wrong or missing something. behavior of mouse click seems change when statement implemented mousereleased action dont understand why .
i'm not sure if source of problems, since i'm not sure code does, looks potential problem:
you should use mousepressed method override , not mouseclicked if paired activity tied mousereleased. mouseclicked method means mouse has been pressed , released on same spot, , touchy , won't called if move mouse, slightly, between clicking , releasing. mousepressed on other hands responds on mousepressed, sounds want.
so perhaps:
private class mousehandler extends mouseadapter { @override public void mousepressed(mouseevent event) { statusbar.settext( string.format( "pressed @ [%d, %d]", event.getx() , event.gety() ) ); int x = event.getx(); int y = event.gety(); mapobject.updatedockorship(x, y,text); //updates selected icon on screen } @override public void mousereleased(mouseevent event) { statusbar.settext( string.format( "released @ [%d, %d]", event.getx() , event.gety() ) ); int x = event.getx(); int y = event.gety(); /*this troublemaker, if delete line "clicks" work everywhere on jpanel. if leave in, clicks work in areas of jpanel, , other legitimate clicks recognized mousereleased in different area of jpanel */ mapbject.checkdocks(x,y,tempint); //trouble } // since extends mouseadapter, other methods not needed }