swing - Mouse Listener not working with a JFrame in Java -


i'm trying make 2d game in java. need way detect mouse input player attacks , other stuff. have working key listener in game when tried adding mouse listener same way did key listener doesn't work.

here mouse listener class (just test codes , these line never output in console when spamming mouse everywhere on display)

package input;  import java.awt.event.mouseadapter; import java.awt.event.mouseevent;  public class mouseinput extends mouseadapter { public mouseinput() {  }  @override public void mouseclicked(mouseevent e) {     system.out.println("hello"); }  @override public void mousepressed(mouseevent e) {     system.out.println("mouse pressed"); }  @override public void mousereleased(mouseevent e) {     system.out.println("mouse released"); } } 

also here display class create jframe , add canvas, key listener , mouse listener it.

package display;  import java.awt.canvas; import java.awt.color; import java.awt.dimension;  import javax.swing.jframe;  import input.keyinput; import input.mouseinput;   public class display { public static jframe frame; private canvas canvas;  private string title; private int width; private int height;  private static double currtime = system.nanotime(); private static double lasttime = 0; private static double delta = 0; private static float fps = 30; private static int tick = 0;  public display(string title, int width, int height) {     this.title = title;     this.width = width;     this.height = height;      createdisplay(); }  private void createdisplay() {     frame = new jframe(title);     frame.setsize(width, height);     frame.setdefaultcloseoperation(jframe.exit_on_close);     frame.setresizable(false);     frame.setlocationrelativeto(null);     frame.setvisible(true);     frame.setfocusable(true);      canvas = new canvas();     canvas.setpreferredsize(new dimension(width, height));     canvas.setminimumsize(new dimension(width, height));     canvas.setmaximumsize(new dimension(width, height));     canvas.setbackground(color.white);       frame.add(canvas);      frame.addkeylistener(new keyinput()); // add keylistener     frame.addmouselistener(new mouseinput()); // add mouselistener     frame.pack();     system.out.println(frame.getmouselisteners().length + " mouse listener found"); // line outputs 1 mouse listener found     system.out.println(frame.getkeylisteners().length + " key listener found"); // line outputs 1 key listener found  }  public void update() // called every frame {     frame.requestfocus();     tick++;     lasttime = currtime;     currtime = system.nanotime();     delta = (currtime - lasttime) / 1000000000;     fps = (float) (1 / delta);     if (tick / getfps() >= 2)     {         tick = 0;         system.out.println("fps = " + math.round(getfps()));         try         {             system.out.println("mouse position = " + frame.getmouseposition().getx()                     + ", " + frame.getmouseposition().gety());         }         catch (exception e)         {             system.out.println("mouse out of screen. not mouse position (nullpointerexception)");         }     } }  public int getwidth() {     return width; }  public int getheight() {     return height; }  public canvas getcanvas() {     return canvas; }  public jframe getframe() {     return frame; }  public static float getfps() {     return fps; } } 

i looked through forum answer every answer given did not fix it.

tell me if need more information solve problem , in advance helping :d

add mouselistener canvas object covers jframe, , code work. note side recommendation, shouldn't mixing awt swing components. use jpanel instead of canvas object.

later may touch on why keylisteners should avoided, since that's not thrust of question, can shelve now.

e.g.,

import java.awt.dimension; import java.awt.event.mouseadapter; import java.awt.event.mouseevent; import javax.swing.*;  @suppresswarnings("serial") public class display2 extends jpanel {     private int prefw;     private int prefh;      public display2(int prefw, int prefh) {         this.prefw = prefw;         this.prefh = prefh;         mymouseadapter mymouseadapter = new mymouseadapter();         addmouselistener(mymouseadapter);         addmousemotionlistener(mymouseadapter);     }      @override     public dimension getpreferredsize() {         if (ispreferredsizeset()) {             return super.getpreferredsize();         }         return new dimension(prefw, prefh);     }      private static void createandshowgui() {         display2 mainpanel = new display2(500, 500);          jframe frame = new jframe("display");         frame.setdefaultcloseoperation(jframe.dispose_on_close);         frame.getcontentpane().add(mainpanel);         frame.pack();         frame.setlocationbyplatform(true);         frame.setvisible(true);     }      public static void main(string[] args) {         swingutilities.invokelater(new runnable() {             public void run() {                 createandshowgui();             }         });     } }  class mymouseadapter extends mouseadapter {     @override     public void mousepressed(mouseevent e) {         system.out.printf("mouse pressed at: %s%n", e.getpoint());     }      @override     public void mousereleased(mouseevent e) {         system.out.printf("mouse released at: %s%n", e.getpoint());     }      @override     public void mousedragged(mouseevent e) {         system.out.printf("mouse dragged at: %s%n", e.getpoint());     } } 

Comments

Popular posts from this blog

dns - How To Use Custom Nameserver On Free Cloudflare? -

python - Pygame screen.blit not working -

c# - Web API response xml language -