PDA

View Full Version : [JAVA] Cannot use this in static context.


HVDSV
28-05-2009, 15:22
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?

wingman87
28-05-2009, 18:45
Si vede che non è il posto giusto dove istanziarlo. Se vuoi passargli un'istanza di mioFrame devi istanziarlo nel costruttore di mioFrame.

khelidan1980
28-05-2009, 20:32
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

^TiGeRShArK^
28-05-2009, 21:23
mi sa che dovrebbe usare un factory method in questo caso per fare una cosa mezza decente.... :stordita:
ma poichè i factory method se usati male sono il MALE + assoluto mi sa che è sbagliato qualcosa nella progettazione... :fagiano:

HVDSV
29-05-2009, 08:11
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:

public mioFrame()
{

this.InitLogHandler();
}

private void InitLogHandler()
{
Handler fh = null;
LogDialogHandler dialogHandler = new LogDialogHandler(this);
dialogHandler.setLevel(Level.SEVERE);
//etcetc
}

Funzionare funziona, ma è giusto fare cosi?

banryu79
03-06-2009, 08:15
Funzionare funziona, ma è giusto fare cosi?

Più che giusto sembrerebbe l'unica opzione che hai, se lo scopo era modificare il meno possibile il codice di partenza.