|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Apr 2008
Messaggi: 35
|
[JAVA] Cannot use this in static context.
Codice:
public class mioFrame extends JFrame
{
/... codice JFrame...
static
{
Handler fh = null;
LogDialogHandler dialogHandler = new LogDialogHandler(THIS);
dialogHandler.setLevel(Level.SEVERE);
//etc..
}
}
public class LogDialogHandler extends Handler
{
public LogDialogHandler(Component c)
{
JOptionPane.messageDialog(c,"ciao");
}
//etcetc
}
Come passo il parametro Component, che sarebbe la classe mioframe, al costruttore di logDialogHandler? this non posso usarlo, essendo all'interno di static. mioFrame.class non posso usarlo come component. Come posso fare?
__________________
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2786
|
Si vede che non è il posto giusto dove istanziarlo. Se vuoi passargli un'istanza di mioFrame devi istanziarlo nel costruttore di mioFrame.
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Mar 2005
Città: Morimondo city
Messaggi: 5491
|
ma quel codice come lo hai tirato fuori?stai usando un blocco di inizializzazione statico e gli vuoi passare come argomento la reference all'oggetto corrente che...non esiste ancora,piu o meno e come fare un metodo statico e passargli this
__________________
Khelidan |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
mi sa che dovrebbe usare un factory method in questo caso per fare una cosa mezza decente....
![]() ma poichè i factory method se usati male sono il MALE + assoluto mi sa che è sbagliato qualcosa nella progettazione...
__________________
|
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Apr 2008
Messaggi: 35
|
E' un codice che mi son trovato fatto cosi.
Speravo di poterlo modificare senza spostare niente. Per ora l'ho messo nel costruttore di mioFrame in questo modo qui: Codice:
public mioFrame()
{
this.InitLogHandler();
}
private void InitLogHandler()
{
Handler fh = null;
LogDialogHandler dialogHandler = new LogDialogHandler(this);
dialogHandler.setLevel(Level.SEVERE);
//etcetc
}
__________________
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Più che giusto sembrerebbe l'unica opzione che hai, se lo scopo era modificare il meno possibile il codice di partenza.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:46.




















