Значок Приложения JavaFX
можно ли изменить значок приложения с помощью JavaFX, или это нужно сделать с помощью Swing?
15 ответов
предполагая, что ваш этап является "этапом" , а файл находится в файловой системе:
stage.getIcons().add(new Image("file:icon.png"));
согласно комментарию ниже, если он завернут в банку, вам нужно будет использовать следующий подход:
stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("icon.png")));
Я пробовал это, и это полностью работает. Код:
stage.getIcons().add(
new Image(
<yourclassname>.class.getResourceAsStream( "icon.png" )));
.формат PNG в той же папке, что и исходные файлы.полная программа для начала :) эта программа установить значок переполнения стека.
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 8
нет необходимости менять код. Он все еще работает нормально. Протестировано и проверено в Java 1.8 (1.8.0_45). Путь может быть установлен в local или remote оба поддерживаются.
stage.getIcons().add(new Image("/path/to/javaicon.png"));
или
stage.getIcons().add(new Image("https://example.com/javaicon.png"));
надеюсь, что это помогает. Спасибо!!
Если у вас есть папка с изображениями, и значок сохраняется в этом, используйте это
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")));
что вы думаете о создании нового пакета i.e изображение.значки в вашем каталоге src и перемещение туда вас .png изображения? Чем нужно просто написать:
Image image = new Image("/image/icons/nameOfImage.png");
primaryStage.getIcons().add(image);
Это решение отлично работает для меня, но я все еще не уверен, правильно ли это (новичок здесь).
stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("/icon.png")));
Если ваш значок.png находится в каталоге ресурсов и не забудьте поставить"/", прежде чем в противном случае он не будет работать
stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("/icon.png" )));
С помощью этого метода можно добавить несколько значков разных размеров.Изображения должны быть разных размеров одного и того же изображения, и будет выбран лучший размер.
eg. 16x16, 32,32
stage.getIcons().add(new Image("/images/logo_only.png"));
это хорошая привычка, чтобы сделать папку изображений в папке src и получить изображения из него.
stage.getIcons().add(new Image(ClassLoader.getSystemResourceAsStream("images/icon.png")));
папка изображений должна быть в папке ресурсов.
я использовал это в моем приложении
Image icon = new Image(getClass().getResourceAsStream("icon.png"));
window.getIcons().add(icon);
здесь окно является сценой.
Я пробовал это, и это работает:
stage.getIcons().add(new Image(getClass().getResourceAsStream("../images/icon.png")));
еще один простой способ вставить свой собственный значок в строке заголовка в JavaFX-это добавить изображение на основной этап, используя следующий метод:
Image ico = new Image("resources/images/iconLogo.png");
stage.getIcons().add(ico);
убедитесь, что ваш импорт javafx.сцена.изображение.Изображение (если вы используете ide, например netbeans, это должно быть сделано автоматически).