abstract classes can have 0 abstract methods. abstract classes merely say that we eventually will extend the class. the fact that we have fully implemented methods in an abstract class does not conflict with this notion. however, even 1 abstract method makes the entire class abstract because an unimplmented method implies that the class is unfinished...so it must be abstract.
as far as new WindowAdapter(), you're not instantiating WindowAdapter class at all...you're creating an anonymous inner class (an extension of the abstract WindowAdapter) and immediately instantiating THAT child class, which of course, is itself not abstract at all.