È possibile modificare l'icona dell'applicazione utilizzando JavaFX oppure è necessario farlo utilizzando Swing?JavaFX Application Icon
risposta
Assumendo che il palco è "palcoscenico" e il file è sul filesystem:
stage.getIcons().add(new Image("file:icon.png"));
Come per il commento qui sotto, se è avvolto in un barattolo contenente avrete bisogno di utilizzare il seguente approccio, invece:
stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("icon.png")));
Ho provato questo e funziona completamente. Il codice è:
stage.getIcons().add(
new Image(
<yourclassname>.class.getResourceAsStream("icon.png")));
icon.png si trova nella stessa cartella dei file di origine.
Un altro modo semplice per inserire il proprio icona sulla barra del titolo in JavaFX è quello di aggiungere l'immagine al vostro fase primaria utilizzando il seguente metodo:
Image ico = new Image("resources/images/iconLogo.png");
stage.getIcons().add(ico);
Assicurati che il tuo importazione javafx.scene.image.Image (se usi un ide come netbeans questo dovrebbe essere fatto automaticamente per te).
non è quello ** esattamente * * cosa è stato pubblicato sopra? – XXL
Programma completo per i principianti :) Questo programma imposta l'icona di sovraccarico dello stack.
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class StackoverflowIcon extends Application {
@Override
public void start(Stage stage) {
StackPane root = new StackPane();
// set icon
stage.getIcons().add(new Image("/path/to/stackoverflow.jpg"));
stage.setTitle("Wow!! Stackoverflow Icon");
stage.setScene(new Scene(root, 300, 250));
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
uscita screnshot
aggiornato per JavaFX 8
Non c'è bisogno di modificare il codice. Funziona ancora bene. Testato e verificato in Java 1.8 (1.8.0_45). Il percorso può essere impostato su locale o remoto entrambi sono supportati.
stage.getIcons().add(new Image("/path/to/javaicon.png"));
O
stage.getIcons().add(new Image("https://example.com/javaicon.png"));
Speranza che aiuta. Grazie!!
Questo supporto svg? – qed
@qed, non penso che SVG sia supportato, ma non ne sono sicuro al 100%. Puoi testarlo. –
stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("/icon.png")));
Se l'icon.png è nelle risorse dir e ricordarsi di mettere un '/' prima che altrimenti non funzionerà
Ho provato questo e funziona:
stage.getIcons().add(new Image(getClass().getResourceAsStream("../images/icon.png")));
stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("/icon.png")));
È possibile aggiungere più di un'icona con dimensioni diverse utilizzando questo metodo. Le immagini devono avere dimensioni diverse della stessa immagine e verrà scelta la dimensione migliore. eg. 16x16, 32,32
Se si dispone di dispone di una cartella immagini e l'icona viene salvato in che uso questo
stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("/images/comparison.png")));
e se si sta utilizzando direttamente dal vostro pacchetto che non è un buon uso pratica questo
stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("comparison.png")));
e se si dispone di una struttura di cartelle e hai il tuo icona all'interno che utilizzano
stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("../images/comparison.png")));
Cosa ne pensi della creazione di un nuovo pacchetto i.e image.icons nella tua directory src e di spostare lì le immagini .png? Che non vi resta che scrivere:
Image image = new Image("/image/icons/nameOfImage.png");
primaryStage.getIcons().add(image);
Questa soluzione funziona per me perfettamente, ma ancora non sono sicuro se è corretto (principiante qui).
è possibile aggiungerlo in fxml. Piano Piano
<icons>
<Image url="@../../../my_icon.png"/>
</icons>
stage.getIcons().add(new Image("/images/logo_only.png"));
E 'buona abitudine di fare la cartella immagini nella cartella src e ottenere immagini da esso.
Questa risposta è completamente inutile poiché [un'altra risposta] (https://stackoverflow.com/a/10122335/8283469) ha già spiegato la stessa cosa. –
stage.getIcons().add(new Image(ClassLoader.getSystemResourceAsStream("images/icon.png")));
cartella immagini deve essere nella cartella delle risorse.
Questa risposta è completamente inutile poiché [un'altra risposta] (https://stackoverflow.com/a/10122335/8283469) ha già spiegato la stessa cosa. –
Ho usato questo nella mia domanda
Image icon = new Image(getClass().getResourceAsStream("icon.png"));
window.getIcons().add(icon);
Qui finestra è il palcoscenico.
Inoltre, se l'icona deve essere installata come collegamento all'applicazione e si utilizza WebStart come tecnologia di distribuzione, è possibile che si desideri impostare le icone/collegamento/impostazioni del desktop appropriate nel file jnlp: http: // docs. oracle.com/javase/7/docs/technotes/guides/javaws/developersguide/syntax.html – jewelsea
È possibile aggiungere più immagini di dimensioni diverse e JavaFX sceglierà quello che si adatta meglio. Perché hai diverse dimensioni nella barra delle applicazioni e diverse nella barra del titolo. – drzymala
Penso che funzioni solo quando il file si trova nel file system, per la situazione più comune in cui l'icona è racchiusa nel file jar e nel classpath, questo non funzionava per me. Una delle altre soluzioni che utilizza 'stage.getIcons(). Add ( new Image ( .class.getResourceAsStream (" icon.png ")));' funziona. –