JStaffNote is essentially an abstract class that any object that has a note value is derived from, hence Note and Rest being subclasses. JStaffElement on the other hand is what any object that ends up on a staff line get derived from, such as time signatures and bar lines.
This means JStaffNote is where note duration is stored and all the constants. Haven't decided if every note of a different duration has a different subclass. Worked well for gracenotes but it's a complex class hierarchy as a result. I get lost every time I need to pick up on it, it's very focused in each class and easy from that point of view though.
Sigh, 2013 will be the year!