Stavo solo cercando di trovare un modo logico semplice per fare esattamente questo . Non ho. Sarebbe davvero bello se ci fosse un Application.getApplicationFor (AppClass.class) che gestiva alcuni singleton per te - ma no.
Se limitiamo lo spazio del problema è piuttosto facile da risolvere. Se facciamo la classe di un Singleton, allora è torta ... Un pattern Singleton semplificato dovrebbe funzionare bene:
class MyApp extends Application
{
public static MyApp me;
public MyApp()
{
me=this;
}
...
}
me può essere nullo se non è stata creata un'istanza da parte del sistema ancora. Sarebbe possibile proteggersi da quello con più codice.
... attuazione del codice ...
appena implementato questo - sembra funzionare (salvo eventuali situazioni di threading strane) Ho una situazione leggermente diversa, sto incuneandosi uno schermo JavaFX in un altalena esistente GUI. Funziona bene, ma devo assicurarmi che Application.launch venga chiamato solo una volta. L'aggiunta di questo requisito, la mia soluzione finale è quindi:
(scusate ma la sintassi ha qualche groove in esso, dovrebbe essere facile per qualsiasi utente Java da tradurre)
class MyClass extends Application{
private static MyClass instance
public MyClass() {
instance=this
}
public synchronized static getInstance() {
if(!instance) {
Thread.start {
// Have to run in a thread because launch doesn't return
Application.launch(MyClass.class)
}
while(!instance)
Thread.sleep(100)
}
return instance
...
} // class
Questo gestisce il blocco fino Application.launch ha completato l'istanziazione della classe, ottenendo istanze da altre posizioni e assicurando che Application.launch venga chiamato esattamente una volta fintanto che getInstance è stato chiamato almeno una volta.
fonte
2016-10-13 20:10:36
Hai fatto il google? http://docs.oracle.com/javase/8/javafx/api/javafx/application/Application.html – Dici
@Dici Cosa intendi? – user2997204
Tutto ciò di cui hai bisogno è nel documento. La tua classe principale ha solo bisogno di estendere 'Applicazione' e quindi il tuo metodo principale chiamerà semplicemente il metodo' launch'. In realtà, un metodo principale non è nemmeno necessario per eseguire un'applicazione JavaFX – Dici