private class Listener extends java.awt.event.MouseAdapter{ public void mouseClicked(MouseEvent e) { for(IShape s : shapeList){ if(s.contains(e.getX(),e.getY())){ s.getShapeMouseAdapter().mouseClicked(e); break; } } } public void mouseDragged(MouseEvent e) { System.out.print(e.getPoint() + "\n"); for(IShape s : shapeList){ if(s.contains(e.getX(),e.getY())){ s.getShapeMouseAdapter().mouseDragged(e); break; } } } public void mouseEntered(MouseEvent e) { for(IShape s : shapeList){ if(s.contains(e.getX(),e.getY())){ s.getShapeMouseAdapter().mouseEntered(e); break; } } } public void mouseExited(MouseEvent e) { for(IShape s : shapeList){ if(s.contains(e.getX(),e.getY())){ s.getShapeMouseAdapter().mouseExited(e); break; } } } public void mouseMoved(MouseEvent e) { for(IShape s : shapeList){ if(s.contains(e.getX(),e.getY())){ s.getShapeMouseAdapter().mouseMoved(e); break; } } } public void mousePressed(MouseEvent e) { for(IShape s : shapeList){ if(s.contains(e.getX(),e.getY())){ s.getShapeMouseAdapter().mousePressed(e); break; } } } public void mouseReleased(MouseEvent e) { for(IShape s : shapeList){ if(s.contains(e.getX(),e.getY())){ s.getShapeMouseAdapter().mouseReleased(e); break; } } } public void mouseWheelMoved(MouseWheelEvent e) { for(IShape s : shapeList){ if(s.contains(e.getX(),e.getY())){ s.getShapeMouseAdapter().mouseWheelMoved(e); break; } } } }
Simplifying these commands.
I wish java had function pointers. How would I simplify this code :
Assuming IShape extends Component:
private class Listener extends java.awt.event.MouseAdapter{ private void conditionalDispatch(MouseEvent e) { for(IShape s : shapeList){ if(s.contains(e.getX(),e.getY())){ s.dispatchEvent(e); return; } } public void mouseClicked(MouseEvent e) { conditionalDispatch(e); } .... // repeat for all other events
I'm sorry, after googling dispatchEvents, I still don't get the big picture.
Mind explaining a little bit please. And IShape does not inherit from Components,
but maybe I can use the suggested idea somehow.
Mind explaining a little bit please. And IShape does not inherit from Components,
but maybe I can use the suggested idea somehow.
Quote:Original post by Concentrate
And IShape does not inherit from Components,
but maybe I can use the suggested idea somehow.
If IShape does not inherit from Component, then it must reinvent what AWT/Swing provides out of box.
MouseEvent contains the type of mouse action that occured.
So without dispatchEvent, it would look something like:
private void conditionalDispatch(MouseEvent e) { for(IShape s : shapeList){ if(s.contains(e.getX(),e.getY())){ switch(e.getId()) { case MouseEvent.MOUSE_CLICKED : s.mouseClicked(e); break; case MouseEvent.MOUSE_DRAGGED : s.mouseDragged(e); break; .... } return; } }
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement