IMHO : I have idea how to avoid adding all buttons, and delete not useful for concrete case buttons.
We can add enum to AbstractWindow with values {APPLAY_BUTTON, SAVE_BUTTON,CANCEL_BUTTON}.
And pass list of this enum elements to constructor of inheritor class. That is how it can decide which buttons it should create and which it should not.
No listeners for all buttons.
It can be added by setting ButtonClickListeners with setters, while standard behavior is to do nothing by 'save', 'apply' and to hide window by 'close'.