it-swarm.com.ru

Иконка приложения JavaFX

Можно ли изменить значок приложения с помощью JavaFX или это нужно сделать с помощью Swing?

141
Sebb77

Предполагая, что ваш этап - «этап», а файл находится в файловой системе:

stage.getIcons().add(new Image("file:icon.png"));

Согласно приведенному ниже комментарию, если он помещен в содержащий jar-файл, вам нужно будет использовать следующий подход:

stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("icon.png")));
198
Michael Berry

Я попробовал это, и это полностью работает. Код является:

stage.getIcons().add(
   new Image(
      <yourclassname>.class.getResourceAsStream( "icon.png" ))); 

icon.png находится в той же папке, что и исходные файлы.

66
user1736233

Полная программа для начинающих :) В этой программе установлен значок переполнения стека.

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);
    }
}

Вывод Screnshot

JavaFX Screenshot

Обновлено для JavaFX 8

Не нужно менять код. Это все еще работает отлично. Протестировано и проверено в Java 1.8 (1.8.0_45). Путь может быть установлен на локальный или удаленный оба поддерживаются.

stage.getIcons().add(new Image("/path/to/javaicon.png"));

OR

stage.getIcons().add(new Image("https://example.com/javaicon.png"));

enter image description here

Надеюсь, поможет. Спасибо!!

64
Madan Sapkota

вы можете добавить его в fxml. Уровень сцены

<icons>
    <Image url="@../../../my_icon.png"/>
</icons>
6
Dmitrij Krupa

Если у вас есть папка с изображениями и значок сохранен в этом, используйте эту 

stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("/images/comparison.png")));

и если вы используете его непосредственно из своего пакета, что не является хорошей практикой, используйте это

stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("comparison.png")));

и если у вас есть структура папок и у вас есть значок внутри этого использования

stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("../images/comparison.png")));
5
Rahul Singh

Вы можете легко поместить значок в свое приложение, используя эту строку кода

stage.getIcons (). add (new Image ("путь к изображению"));

3
TG Kavinda Pushpitha

Что вы думаете о создании нового пакета, т.е. image.icons, в вашем каталоге src и перемещении туда ваших изображений .png? Чем вам просто нужно написать:

Image image = new Image("/image/icons/nameOfImage.png");
primaryStage.getIcons().add(image);

Это решение отлично работает для меня, но все же я не уверен, правильно ли оно (новичок здесь).

2
Dawid
stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("/icon.png")));

Если ваш icon.png находится в каталоге ресурсов, и не забудьте поставить «/», иначе он не будет работать

1
LazerBanana
stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("/icon.png" )));

Используя этот метод, вы можете добавить более одного значка с разными размерами. Изображения должны быть разных размеров одного и того же изображения, и будет выбран лучший размер .eg. 16x16, 32,32

1
CTN
stage.getIcons().add(new Image(ClassLoader.getSystemResourceAsStream("images/icon.png")));

папка с изображениями должна находиться в папке Resource.

1
PsyhoZOOM

Если вы запустите JAR-файл, код, указанный Майклом Берри, изменит значок в строке заголовка и на панели задач. Значок ярлыка не может быть изменен.

Если вы запускаете нативную программу, скомпилированную с com.zenjava, вы должны добавить ссылку на значок программы:

<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>

Это добавит значок на ярлык и панель задач.

0
Oleksandr Potomkin

Я использовал это в моем приложении

Image icon = new Image(getClass().getResourceAsStream("icon.png"));
window.getIcons().add(icon);

Здесь окно - сцена.

0
Moishin
stage.getIcons().add(new Image("/images/logo_only.png"));

Хорошей привычкой является создание папки images в папке src и получение изображений из нее.

0
Harshad Vaghela

stage.getIcons (). add (new Image (("nospaniol/ui/icons/nospaniol.png")));

0
Nospaniol Noah

Если вы получили Invalid URL or resource not found, поместите ваш icon.png в папку «bin» в вашем рабочем пространстве.

0
Tim113