2013-03-29 15 views
5

è possibile incollare un tavolino al desktop?Come creare un JavaFX-Widget

Voglio comportarmi come widget dell'applicazione, quindi all'avvio dovrebbe essere visualizzato sopra il desktop e non davanti all'applicazione corrente che potrebbe essere aperta.

L'altra condizione per un widget è che non ha voce nella barra delle applicazioni. È anche possibile?

+0

Dai un'occhiata a http://www.youtube.com/watch?v=IFIlr6cpX64 –

+0

Non puoi farlo direttamente in java, sono costruiti in html e javascript. –

risposta

6

ho provato questo con JavaFX 2.2 e ha avuto i seguenti risultati:

così quando comincia dovrebbe essere visualizzato proprio sopra il desktop e non di fronte alla applicazione corrente che potrebbe essere aperto

La chiamata stage.toBack posiziona uno stage dietro qualsiasi altra finestra.

Sono stato in grado di ottenere una finestra per rimanere sempre dietro altre finestre la maggior parte del tempo (almeno su un Mac). Per fare ciò, ho aggiunto un paio di listener e filtri prima di mostrare lo stage in un clock application.

stage.focusedProperty().addListener(new ChangeListener<Boolean>() { 
    @Override 
    public void changed(ObservableValue<? extends Boolean> observableValue, Boolean wasFocused, Boolean focused) { 
    stage.toBack(); 
    } 
}); 

stage.addEventFilter(MouseEvent.ANY, new EventHandler<MouseEvent>() { 
    @Override 
    public void handle(MouseEvent mouseEvent) { 
    stage.toBack(); 
    } 
}); 

C'è una richiesta esistente per la capacità di impostare un stage to always be on top. Potresti creare una nuova richiesta corrispondente per l'abilità che un palcoscenico deve essere sempre dietro.

L'altra condizione per un widget sarebbe che non ha alcuna voce nella barra delle applicazioni

Su Windows, penso che se si init the stage style-StageStyle.UTILITY, Windows non mostra un'icona per la fase a la barra delle applicazioni di Windows.

Ho provato un paio di stili di stage diversi su OS X e una piccola icona di Java cup veniva sempre visualizzata nel dock di OS X quando eseguivo l'app e (a differenza di Windows) l'impostazione di icons for the stage non eliminava la Java cup icona. Forse se hai creato un'applicazione OS X self-contained puoi disattivare l'icona durante la fase di confezionamento o impostare l'icona su un'immagine trasparente in modo che non sia visibile all'utente.

È anche possibile creare una richiesta di funzione per questo (separata da quella sempre verso retro) nello JavaFX issue tracker. Se crei problemi relativi a questo, spiega il tuo caso d'uso e rimanda a questa domanda.

+0

Questa soluzione ha funzionato perfettamente per me su Windows, anche se non ho bisogno di nascondere la finestra dalla barra delle applicazioni. Ora penso, con JavaFX 8, dove abbiamo una funzionalità 'alwaysOnTop', ci dovrebbe essere una cosa simile per far rimanere sempre la finestra. Qualcuno sa se c'è ancora un problema con il tracker ufficiale? – RegisteredUser

+0

Non so se è stata creata una richiesta di funzione. Se lo desideri, puoi cercare il tracker dei problemi e crearne uno se non esiste già una richiesta di funzione esistente. – jewelsea