Jawaban:
Dengan asumsi stage Anda adalah "stage" dan file ada di sistem file:
stage.getIcons().add(new Image("file:icon.png"));
Seperti komentar di bawah ini, jika dibungkus dengan toples yang berisi, Anda harus menggunakan pendekatan berikut:
stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("icon.png")));
stage.getIcons().add( new Image( <yourclassname>.class.getResourceAsStream( "icon.png" )));
karya.
Saya mencoba ini dan itu benar-benar berfungsi. Kode tersebut adalah:
stage.getIcons().add(
new Image(
<yourclassname>.class.getResourceAsStream( "icon.png" )));
icon.png berada di bawah folder yang sama dengan file sumber.
Program lengkap untuk pemula :) Program ini menetapkan ikon untuk StackOverflowIcon.
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);
}
}
Output Screnshot
Diperbarui untuk JavaFX 8
Tidak perlu mengubah kode. Itu masih berfungsi dengan baik. Diuji dan diverifikasi di Java 1.8 (1.8.0_45). Path dapat diatur ke lokal atau jauh keduanya didukung.
stage.getIcons().add(new Image("/path/to/javaicon.png"));
ATAU
stage.getIcons().add(new Image("https://example.com/javaicon.png"));
Semoga ini bisa membantu. Terima kasih!!
Anda dapat menambahkannya di fxml. Tingkat panggung
<icons>
<Image url="@../../../my_icon.png"/>
</icons>
Jika Anda memiliki folder gambar dan ikon disimpan dalam penggunaan ini
stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("/images/comparison.png")));
dan jika Anda langsung menggunakannya dari paket Anda yang bukan praktik yang baik gunakan ini
stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("comparison.png")));
dan jika Anda memiliki struktur folder dan Anda memiliki ikon di dalamnya yang digunakan
stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("../images/comparison.png")));
stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("/icon.png")));
Jika icon.png Anda berada di dir sumber daya dan ingatlah untuk meletakkan tanda '/' sebelum itu tidak akan berfungsi
Apa yang Anda pikirkan tentang membuat paket baru yaitu image.icons di direktori src Anda dan memindahkan gambar .png ke sana? Daripada Anda hanya perlu menulis:
Image image = new Image("/image/icons/nameOfImage.png");
primaryStage.getIcons().add(image);
Solusi ini berfungsi dengan baik untuk saya, tetapi saya masih tidak yakin apakah itu benar (pemula di sini).
resources
folder Anda .
stage.getIcons().add(new Image(ClassLoader.getSystemResourceAsStream("images/icon.png")));
folder gambar harus di folder Sumber.
Anda dapat dengan mudah menaruh ikon ke aplikasi Anda menggunakan baris kode ini
stage.getIcons (). add (Gambar baru ("jalur gambar"));
stage.getIcons().add(new Image("/images/logo_only.png"));
Merupakan kebiasaan yang baik untuk membuat folder gambar di folder src Anda dan mengambil gambar darinya.
Jika Anda menjalankan file jar, kode yang ditentukan oleh Michael Berry akan mengubah ikon di bilah judul dan di bilah tugas. Ikon pintasan tidak dapat diubah.
Jika Anda menjalankan program asli yang dikompilasi dengan com.zenjava, Anda harus menambahkan tautan ke ikon program:
<plugin>
<groupId>com.zenjava</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>8.8.3</version>
<configuration>
...
<bundleArguments>
<icon>${project.basedir}/src/main/resources/images/filename.ico</icon>
</bundleArguments>
</configuration>
</plugin>
Ini akan menambahkan ikon ke pintasan dan bilah tugas.
Beralih ikon dalam runtime:
Selain tanggapan di sini, saya menemukan bahwa setelah Anda menetapkan Ikon untuk aplikasi Anda saat pertama kali Anda tidak dapat beralih dengan hanya menambahkan ikon baru ke panggung Anda (ini akan membantu jika Anda perlu beralih ikon ikon Anda aplikasi dari aktif / nonaktif diaktifkan / dinonaktifkan).
Untuk mengatur ikon baru saat run time gunakan getIcons (). Hapus (0) sebelum mencoba menambahkan ikon baru, di mana 0 adalah indeks dari ikon yang ingin Anda timpa seperti ditunjukkan di sini:
//Setting icon by first time (You can do this on your start method).
stage.getIcons().add(new Image(getClass().getResourceAsStream("enabled.png")));
//Overriding app icon with a new status (This can be in another method)
stage.getIcons().remove(0);
stage.getIcons().add(new Image(getClass().getResourceAsStream("disabled.png")));
Untuk mengakses tahap dari metode atau kelas lain, Anda dapat membuat bidang statis baru untuk tahap di kelas utama Anda sehingga dapat mengaksesnya dari awal () metode dengan merangkum metode statis yang dapat Anda akses dari mana saja di aplikasi Anda .
public class MainApp extends Application {
private static Stage stage;
public static Stage getStage() { return stage; }
@Override public void start(Stage primaryStage) {
stage = primaryStage
stage.getIcons().add(new Image(getClass().getResourceAsStream("enabled.png")));
}
}
public class AnotherClass {
public void setStageTitle(String newTitle) {
MainApp.getStage().setTitle(newTitle);
MainApp.getStage().getIcons().remove(0);
MainApp.getStage().getIcons().add(new Image(getClass().getResourceAsStream("disabled.png")));
}
}
Cara mudah lain untuk menyisipkan ikon Anda sendiri pada bilah judul di JavaFX adalah menambahkan gambar ke tahap utama Anda menggunakan metode berikut:
Image ico = new Image("resources/images/iconLogo.png");
stage.getIcons().add(ico);
Pastikan impor javafx.scene.image.Image Anda (jika menggunakan ide seperti netbeans, ini harus dilakukan secara otomatis untuk Anda).
Saya mencoba ini dan berhasil:
stage.getIcons().add(new Image(getClass().getResourceAsStream("../images/icon.png")));