Intanto grazie per aver postato questo esempio: non conoscevo il frattale di mandelbrot ed è davvero interessante, dopo mi cerco un po' di materiale
Questo accade perché con il tuo codice il JScrollPane che crei non viene in realtà aggiunto al JFrame, o meglio viene aggiunto ma poi "rimpiazzato" dal PixelCanvas che aggiungi dopo.
Infatti se provi a rimuovere o commentare la riga di codice con cui aggiungi il PixelCanvas al frame, vedrai apparire lo scrollpane con le scrollbar.
Se intendevi solo fare in modo che le scrollbar apparissero nel canvas che hai creato puoi aggiungere direttamente il canvas allo scrollpane, invece di aggiungerci un pannello che poi non usi.
Una cosa di questo tipo:
Poi aggiungi solo il JScrollPane al tuo frame oppure, cosa molto più pulita, lo setti come content pane come fai nella riga commentata in fondo.codice:JScrollPane pane=new JScrollPane(new PixelCanvas(),JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
Infatti non è buona pratica aggiungere i componenti direttamente al frame, andrebbero aggiungi al content pane del tuo frame, oppure a un componente che poi viene settato come content pane (come in questo caso).
Oltre a questo ci sono diverse cose che non vanno molto bene nel codice che hai postato, un esempio è il miscuglio tra componenti di awt e swing, o la lettura da scanner che fai all'interno del canvas, o l'inefficienza dei metodi colore e colore2 (che tra l'altro vengono richiamati milioni di volte all'interno del paint, quindi immagino possano rallentare di molto l'esecuzione)...
Immagino che l'interesse fosse rivolto principalmente al frattale e non alla costruzione del frame, ma il miglioramento di questa parte potrebbe essere molto utile
PS: ricordati di inserire il tuo codice all'interno dei tag [CODE] per mantenerlo formattato, ora l'ha fatto un moderatore ma non costringiamoli sempre a dover intervenire![]()