java - I can't tell why this isn't working. My mouse listener in my JPanel works fine, but my key listener doesn't -


my jpanel has keylistener , mouselistener. mouselistener works fine, keylistener doesn't work @ all. have never had problem before. here code of jpanel , main class.

main:

import java.awt.borderlayout; import java.awt.dimension; import java.awt.toolkit;  import javax.swing.*;  public class levelbuilderframe {  public static void main(string[] args) {     jframe frame = new jframe("2d level builder");     jpanel mainpanel = new jpanel();     jtoolbar toolbar = new jtoolbar();     jscrollpane scrollpane = new jscrollpane();     levelbuilderpanel lbp = new levelbuilderpanel();     dimension screensize = toolkit.getdefaulttoolkit().getscreensize();     frame.setjmenubar(new menu());     scrollpane.setpreferredsize(lbp.getsize());     scrollpane.getviewport().add(new levelbuilderpanel());     toolbar.add(new levelobjectselector());     mainpanel.setlayout(new borderlayout());     mainpanel.add(scrollpane, borderlayout.center);     mainpanel.add(toolbar, borderlayout.north);     lbp.setfocusable(true);     lbp.requestfocusinwindow();     frame.setsize((int)screensize.getwidth(), (int)screensize.getheight());     frame.setcontentpane(mainpanel);     frame.setvisible(true); }  } 

panel:

import java.awt.alphacomposite; import java.awt.dimension; import java.awt.graphics; import java.awt.graphics2d; import java.awt.rectangle; import java.awt.renderinghints; import java.awt.toolkit; import java.awt.event.keyevent; import java.awt.event.keylistener; import java.awt.event.mouseevent; import java.awt.event.mouselistener; import java.awt.event.mousemotionlistener; import java.io.file; import java.io.filenotfoundexception; import java.io.filewriter; import java.io.ioexception; import java.io.printwriter; import java.util.arraylist; import java.util.scanner;  import javax.swing.*;  import objects.levelobject; import objects.platform;  public class levelbuilderpanel extends jpanel implements  keylistener,             mouselistener,     mousemotionlistener { private static final long serialversionuid = 1l; static string levelobject = ""; private int selectedobject; static boolean selectortool = false; private float scale = 1; private levelobject lo; private rectangle mouserect; dimension screensize = toolkit.getdefaulttoolkit().getscreensize(); static arraylist<levelobject> level = new arraylist<levelobject>();  public levelbuilderpanel() {      this.addkeylistener(this);     this.addmouselistener(this);     this.addmousemotionlistener(this);     this.setfocusable(true);     this.requestfocus(); }  public void paintcomponent(graphics g) {     super.paintcomponent(g);     graphics2d g2 = (graphics2d) g;      g2.scale(scale, scale);      if (level.size() != 0) {         (int = 0; < level.size(); i++) {             g2.drawimage(level.get(i).getimage(), level.get(i).getx(),                     level.get(i).gety(), level.get(i).getwidth(), level                             .get(i).getheight(), null);             g2.setcomposite(alphacomposite.src);             g2.setrenderinghint(renderinghints.key_interpolation,                     renderinghints.value_interpolation_bilinear);             g2.setrenderinghint(renderinghints.key_rendering,                     renderinghints.value_render_quality);             g2.setrenderinghint(renderinghints.key_antialiasing,                     renderinghints.value_antialias_on);         }     }      if (lo != null)         g2.drawimage(lo.getimage(), lo.getx(), lo.gety(), lo.getwidth(),                 lo.getheight(), null);      if (selectortool)         g2.draw(level.get(selectedobject).getrect());      (int = 0; < 1500; += 10) {         g2.drawline(i, 0, i, 2000);         g2.drawline(0, i, 2000, i);     }  }  @override public dimension getpreferredsize() {     dimension size = new dimension((int) (screensize.getwidth() * 0.90),             (int) (screensize.getheight() * 0.90));     size.width = math.round(size.width * scale);     size.height = math.round(size.height * scale);     return size; }  @override public void mouseclicked(mouseevent e) {  }  @override public void mouseentered(mouseevent e) {  }  @override public void mouseexited(mouseevent e) {  }  @override public void mousepressed(mouseevent e) {     if (selectortool) {         (int = 0; < level.size(); i++) {             if (mouserect.intersects(level.get(i).getrect()))                 selectedobject = i;         }     }     repaint(); }  @override public void mousereleased(mouseevent e) {     int x = (int) (math.round((e.getx() + 5) / 10.0) * 10.0) - 10;     int y = (int) (math.round((e.gety() + 5) / 10.0) * 10.0) - 10;     if (levelobject.equalsignorecase("grassplatform")) {         level.add(new platform("images\\platform.png", x, y, 20, 10, true));     }     repaint();  }  @override public void mousedragged(mouseevent e) {     mouserect = new rectangle(e.getx(), e.gety(), 1, 1);     int x = (int) (math.round((e.getx() + 5) / 10.0) * 10.0) - 10;     int y = (int) (math.round((e.gety() + 5) / 10.0) * 10.0) - 10;      if (selectortool) {         (int = 0; < level.size(); i++) {             if (mouserect.intersects(level.get(i).getrect()))                 selectedobject = i;         }         level.get(selectedobject).setx(x);         level.get(selectedobject).sety(y);     }     repaint(); }  @override public void mousemoved(mouseevent e) {     mouserect = new rectangle(e.getx(), e.getx(), 1, 1);     int x = (int) (math.round((e.getx() + 5) / 10.0) * 10.0) - 10;     int y = (int) (math.round((e.gety() + 5) / 10.0) * 10.0) - 10;      if (levelobject.equalsignorecase("grassplatform")) {         lo = new platform("images\\platform.png", x, y, 20, 10, true);     } else         lo = null;     repaint(); }  @override public void keypressed(keyevent e) {     int key = e.getkeycode();     if (key == keyevent.vk_right && selectortool) {         level.get(selectedobject).setx(                 level.get(selectedobject).getx() + 10);     }      else if (key == keyevent.vk_left && selectortool) {         level.get(selectedobject).setx(                 level.get(selectedobject).getx() - 10);     }      else if (key == keyevent.vk_up && selectortool) {         level.get(selectedobject).sety(                 level.get(selectedobject).gety() - 10);     }      else if (key == keyevent.vk_left && selectortool) {         level.get(selectedobject).sety(                 level.get(selectedobject).gety() + 10);     }      else if (key == keyevent.vk_delete && selectortool) {         level.remove(selectedobject);     }     revalidate();     repaint(); }  @override public void keyreleased(keyevent e) { }  @override public void keytyped(keyevent e) {  }  static void save(file file) {     printwriter writer = null;     try {         writer = new printwriter(new filewriter(file));     } catch (ioexception e) {         e.printstacktrace();     }     (int = 0; < level.size(); i++)         writer.println(string.valueof(level.get(i).getname() + " "                 + level.get(i).getimagename() + " " + level.get(i).getx()                 + " " + level.get(i).gety() + " " + level.get(i).getwidth()                 + " " + level.get(i).getheight() + " "                 + level.get(i).issolid()));      writer.close();     joptionpane.showmessagedialog(null, "file saved");  }  static void load(file file) {      scanner sc = null;     try {         sc = new scanner(file);     } catch (filenotfoundexception e) {         e.printstacktrace();     }     level.clear();     while (sc.nextline() != null) {         if (sc.next().equals("platform")) {             level.add(new platform(sc.next(), integer.parseint(sc.next()),                     integer.parseint(sc.next()),                     integer.parseint(sc.next()),                     integer.parseint(sc.next()), boolean.valueof(sc.next())));         }     }     sc.close();  }  } 

please help! :)


Comments

Popular posts from this blog

javascript - Bootstrap Popover: iOS Safari strange behaviour -

Magento/PHP - Get phones on all members in a customer group -

session - Logging Out Using PHP -