JOptionPane va bene per cose tutto sommato semplici. Se intendi espandere la tua dialog in futuro, es. aggiungere un menù o ad esempio gestire una logica per cui ad esempio il pulsante Ok si abilita solo sotto certe condizioni, allora la creazione della dialog da zero è sì più complessa ma alla lunga ripaga perché hai più controllo.
Quello che dicevo io non cambia se la invocazione è diretta o indiretta. Un costruttore non dovrebbe causare (in)direttamente la invocazione di un metodo sovrascritto in una sotto-classe di quella classe.
Prova a dirmi cosa fa questo codice (che a prima vista sembra assolutamente banale e innocuo, specialmente ClasseDerivata) ... e perché ....codice:public class Prova { public static void main(String[] args) { ClasseBase b = new ClasseDerivata(); } } abstract class ClasseBase { public ClasseBase() { test(); } protected abstract void test(); } class ClasseDerivata extends ClasseBase { private String nome = "Paperino"; protected void test() { System.out.println("nome = " + nome); } }
Ma così il init() della sottoclasse ha troppa "responsabilità", deve invocare super.init() (se te lo dimentichi, nessun errore di compilazione ma poi non ti funziona) e comunque agisce su caratteristiche della dialog che invece non dovrebbe "sapere".



Rispondi quotando