'''All of the below applies for EclipseIde and IntellijIdea, although the key bindings vary somewhat''' ---- Eclipse has code completion for anonymous classes: frame.addMouseListener(new M); typing CTRL+SPACE and selecting 'M''''''ouseAdapter' gives you frame.addMouseListener(new M''''''ouseAdapter); then you type in '(){}' and add enter as you see fit to get something like: frame.addMouseListener(new M''''''ouseAdapter() { } ); typing CTRL+SPACE will show a list of methods you can override and selecting mouseClicked' gives you frame.addMouseListener(new M''''''ouseAdapter() { public void mouseClicked(M''''''ouseEvent e) { } } ); as such, you can easily override other methods, now or later, as you like. and IDEA: * IDEA also offers definable 'templates': Type e.g. 'itco' and hit TAB and it'll generate the code for an iteration of the elements of a collection. Templates can have variable parts you can step through with the TAB key and modify them. * IDEA has code completion for anonymous classes (useful for event handlers): frame.addMouseListener(new ); typing CTRL+SHIFT+SPACE and selecting 'M''''''ouseAdapter' opens a list of overridable methods and gives the following code (depending on the selection of overridable methods): frame.addMouseListener(new M''''''ouseAdapter() { public void mouseClicked(M''''''ouseEvent e) { } public void mousePressed(M''''''ouseEvent e) { } public void mouseReleased(M''''''ouseEvent e) { } public void mouseEntered(M''''''ouseEvent e) { } public void mouseExited(M''''''ouseEvent e) { } }); (similar when M''''''ouseListener is selected instead of M''''''ouseAdapter). This works on any method that takes an interface reference as a parameter.