allora, ho cercato si seguire la terza soluzione.
nella super-classe ho impostato il layout di base, e messo alcuni metodi generici come protected.
ad esempio:
codice:
    protected void setTextButtonAdd(String text) {
        btnAdd.setText(text);
    }

    protected void setTextButtonUp(String text) {
        btnUp.setText(text);
    }

    protected void setTextButtonDel(String text) {
        btnDel.setText(text);
    }

    protected void riempiCombo(ArrayList<? extends Object> list) {
        comboUp.removeAllItems();
        comboUp.addItem("*");
        list.stream().forEach((strObj) -> {
            comboUp.addItem(strObj);
        });
    }
il metodo riempiCombo, riempiraà la jcombobox o con oggetti Author o con oggetti Editor (a seconda di quello che mi serve).
poi nella sotto-classe:
codice:
public class FrameAuthor extends FrameAEBase {

    private ReadJson jsonRead = new ReadJson();
    private ArrayList<? extends Object> list = null;

    public FrameAuthor() {
        super();
        super.setTextButtonAdd("Aggiungi autore");
        super.setTextButtonUp("Modifica autore");
        super.setTextButtonDel("Cancella autore");
        try {
            list = jsonRead.getAllAuthors();
        } catch (IOException ex) {
            JOptionPane.showMessageDialog(null, ex.getMessage());
        }
        super.riempiCombo(list);
    }
}
a parte il funzionamento (l'ho testato e funziona), può andar bene??