|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Oct 2000
Messaggi: 432
|
[JAVA] costruttore deepcopy
Ho un problema con la classe Image...
Un metodo della mia classe modifica una certa immagine attraverso Graphics.... il problema è che tali modifica sono permanenti... invece vorrei che fossero solo temporanee!!!!! Ho pensato di usare il metodo clone() all'interno del metodo Codice:
...
public void metodo()
{ Image sfondo=((Image)icona[1]).clone();
...
}
...
purtroppo ottengo il seguente errore... C:\Karlmail\Karlmail\Karlmail\classes\GestoreSysTray.java:390: clone() has protected access in java.lang.Object come devo fare per risolvere il probleama.......??? grazie e ciao!!!!! |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
Re: [JAVA] costruttore deepcopy
Quote:
te lo dice il messaggio, devi fare una sottoclasse della classe che contiene l'oggetto Image e ridefinire il metodo clone() rendendolo pubblico. Occhio che il codice per "copiare" gli oggetti interni lo devi scrivere tu Ultima modifica di kingv : 23-10-2003 alle 12:28. |
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Oct 2000
Messaggi: 432
|
Come faccio se non voglio ridefinire la classe Image?
non è esiste un'altra soluzione per questo problema? Praticamente: voglio ottenere un nuovo oggetto Image che è copia identica di un'oggetto Image originario. In questo modo, se faccio modifiche sull'oggetto 'copiato' esse non si ripercuotono sull'oggetto originario..... Ciao e grazie.... |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
non mi viene in mente nulla, appena ho un attimo ci penso |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Oct 2000
Città: Montreal (Canada)
Messaggi: 1309
|
Dovrebbe essere sufficiente fargli implementare l'interfaccia Cloneable:
Quote:
Prova e facci sapere... PS: l'altro problema con i bordi di un bottone l'hai risolto? |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Oct 2000
Messaggi: 432
|
Ma dovrei implementare l'interfaccia Clonable nella classe che definisce il mio metodo.... ma non ha senso perchè la mia classe 'ha un altro significato' : non gestisce immagini!!!!
Ho provato in questo modo: Codice:
public synchronized void lampeggia(boolean lampeggio)
{ImageIcon sfondotemp=null;;
Image sfondo=null;
if (ga.cePosta()) sfondotemp=new ImageIcon(icone[0]);
else sfondotemp=new ImageIcon(icone[0]);
sfondo=sfondotemp.getImage();
...
per il problema dei botton ho risolto ciao |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Oct 2000
Città: Montreal (Canada)
Messaggi: 1309
|
In teoria dovrebbe andare... comunque intendevo creare una nuova classe MyImageIcon che implementasse Clonable e che estendesse ImageIcon... ma se così funziona
|
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Sep 2001
Città: Roma
Messaggi: 1944
|
Quote:
dato un oggetto (classe) qualunque, se gli fai implementare l'interfaccia Clonable, dici a Java che egli può essere copiato! quindi implementala DIRETTAMENTE nell'oggetto che vuoi copiare, in quanto il significato c'è, eccome! cmq, clone è protetta, quindi vuol dire che è utilizzabile solo nell'ambito del package che stai considerando... se inserisci il tuo oggetto in quel package, IMHO, la dovresti poter usare... però non te l'assicuro, per me è meglio farsi il Clonable!
__________________
"Oggi è una di quelle giornate in cui il sole sorge veramente per umiliarti" Chuck Palahniuk Io c'ero |
|
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Oct 2000
Città: Montreal (Canada)
Messaggi: 1309
|
Quote:
Quindi non è necessario inserire la classe nel package... |
|
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Sep 2001
Città: Roma
Messaggi: 1944
|
Quote:
come no? se ho una classe protetta, es miaclasse in un package chiamato mio, e voglio usare uno dei suoi metodi in un'altra classe, devo dichiarare in questa classe l'appartenenza al package mio... sennò da il suo errore...
__________________
"Oggi è una di quelle giornate in cui il sole sorge veramente per umiliarti" Chuck Palahniuk Io c'ero |
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Oct 2000
Città: Montreal (Canada)
Messaggi: 1309
|
o non ci stiamo capendo o c'è qualcuno che si sbaglia...
se ho un "metodo" protetto è sufficiente estendere la classe perché questo metodo sia richiamabile dalla sottoclasse... Codice:
package MyA;
public class A{
...
protected void vai(){ ...}
}
Codice:
package MyB;
import MyA.*;
public class B extends A{
...
public void pippo(){ super.vai();}
}
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:02.











non mi viene in mente nulla, appena ho un attimo ci penso








