
Originariamente inviata da
andbin
Il problema della eccezione è facile da capire, in initView() fai un:
return this;
Qui
this è la istanza del tuo AbstractView (il JWindow). E nel costruttore fai:
getContentPane().add(initView());
Ovvero la tua finestra cerchi di aggiungerla dentro il content-pane che è a sua volta contenuto nella finestra. Ovviamente non ha senso ....
Ma a parte questo il tuo codice mostra cose dubbie/inutili. Innanzitutto setti 2 volte il CardLayout. Poi usi dei setBounds. I setBounds usati così direttamente sui componenti sono inutili se c'è un layout manager. Infatti è il layout manager che usa setBounds (o setLocation+setSize) per posizionare e dimensionare i componenti secondo i
suoi criteri.
Inoltre CardLayout si usa per "switchare" tra più componenti facendone vedere sempre e solo uno per volta. Ma per farlo bisogna dare un "nome" ai componenti. Con CardLayout si usa tipicamente il add() sul contenitore che ha anche un secondo argomento ovvero il "constraint" per CardLayout passando tipicamente una stringa:
contenitore.add(card1, "nome-per-card1");
Poi per switchare basta fare:
ilCardLayout.show(contenitore, "nome-per-card1");
Quindi onestamente ti suggerirei di approfondire meglio Swing, componenti/contenitori, layout manager, ecc... prima di "buttarti" su qualcosa di complesso come mi sembra di capire che stai cercando di fare ....
