I did something similar for an MVP architecture that we use. The rule was to have no application logic in the UI, and no reference to Swing components in the Presenters. We accomplished that by:
Creating an Interface that the Swing GUI implemented. The presenters had a handle to this Interface and is how it interacted with the UI.
Using enums (or String constants, or whatever) that acted as a key for each field. The UI would register each component with the specified key, and the Presenter would then act upon the UI using these field keys.
Code in the Presenter would look something like this:
ui.setEditable(AddressBook.NAME, false);
ui.setValue(AddressBook.NAME, "John Doe");
The UI would receive these events and make the JTextField for the NAME field read-only, populated with the given text.
So based on your question, you want to add JButtons dynamically to the UI? We wouldn't normally do that. In our scenerio, the Swing implementor of the UI interface would already have all of it's components created and registered.
However, if that's what's really needed, I imagine I'd need a method that looked like this on the UI (based on an Address Book example):
ui.addCommandButton(AddressBook.SOME_COMMAND, "Button Text");
Or, if you didn't have the key and wanted the UI to generate a new field dynamically, maybe something like:
Object key = ui.addCommandButton("Button Text");