Иконка для приложения в JavaFX
Хочу заменить стандартную иконку в программе, но при запуске выдает ошибки, подскажите, пожалуйста, как исправить. Картинка для иконки 128х128 пикселей, 35.6КБ, расширение .ICO
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.stage.Stage;
import java.io.IOException;
public class HelloApplication extends Application {
@Override
public void start(Stage stage) throws IOException {
// Иконка
// Image(getClass().getResourceAsStream("logo_128_128.ico")));
// Image ico = new Image("resources/Image/logo_128_128.ico"); stage.getIcons().add(ico);
FXMLLoader fxmlLoader = new FXMLLoader(HelloApplication.class.getResource("hello-view.fxml"));
Scene scene = new Scene(fxmlLoader.load(), 1280, 720);
// Иконка
stage.getIcons().add(new Image(this.getClass().getResourceAsStream("/logo_128_128.ico")));
stage.setTitle("calculation");
stage.setScene(scene);
}
public static void main(String[] args) {
launch();
}
}
Ответы (3 шт):
Автор решения: Qwer
→ Ссылка
Насколько я знаю javaFX поддерживает расширения jpeg, png, gif, bmp.
Попробуйте сохранить картинку в одном из них.
Перед ссылкой на картинку добавьте "file:".
Т.е. в общем виде это должно выглядеть так
Image image = new Image("file:ВАШ_ПУТЬ")
Автор решения: Сергей Иванович
→ Ссылка
Иконка в src/main/resources/?
Тогда:
stage.getIcons().add(
new Image(HelloApplication.class.getResourceAsStream("/logo_128_128.ico")));
Пример кода:
import java.io.IOException;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class HelloApplication extends Application {
@Override
public void start(Stage stage) throws IOException {
FXMLLoader fxmlLoader = new FXMLLoader(
HelloApplication.class.getResource("hello-view.fxml"));
Scene scene = new Scene(fxmlLoader.load(), 1280, 720);
// Иконка
stage.getIcons().add(new Image(HelloApplication
.class.getResourceAsStream("/logo_128_128.ico")));
stage.setTitle("calculation");
stage.setScene(scene);
}
public static void main(String[] args) {
launch();
}
}
Автор решения: Kolhoznik
→ Ссылка
Я так сделал и работает:
stage.getIcons().add(new Image(Objects.requireNonNull(
this.getClass().getResourceAsStream("/images/icon.png"))));