Меню Рубрики

Установка иконки в javafx

JavaFX Application Icon

Is it possible to change the application icon using JavaFX, or does it have to be done using Swing?

17 Answers 17

Assuming your stage is «stage» and the file is on the filesystem:

As per the comment below, if it’s wrapped in a containing jar you’ll need to use the following approach instead:

I tried this and it totally works. The code is:

icon.png is under the same folder as the source files.

Full program for starters 🙂 This program sets icon for StackOverflowIcon.

Output Screnshot

No need to change the code. It still works fine. Tested and verified in Java 1.8(1.8.0_45). Path can be set to local or remote both are supported.

you can add it in fxml. Stage level

If you have have a images folder and the icon is saved in that use this

and if you are directly using it from your package which is not a good practice use this

and if you have a folder structure and you have your icon inside that use

If your icon.png is in resources dir and remember to put a ‘/’ before otherwise it will not work

What do you think about creating new package i.e image.icons in your src directory and moving there you .png images? Than you just need to write:

This solution works for me perfectly, but still I’m not sure if it’s correct (beginner here).

You can add more than one icon with different sizes using this method.The images should be different sizes of the same image and the best size will be chosen. eg. 16×16, 32,32

images folder need to be in Resource folder.

You can easily put icon to your application using this code line

stage.getIcons().add(new Image(«image path») );

It is good habit to make images folder in your src folder and get images from it.

I used this in my application

If you run the jar file, the code specified by Michael Berry will change the icon in the title bar and in the taskbar. Shortcut icon cannot be changed.

If you run a native program compiled with com.zenjava, You must add a link to the program icon:

This will add an icon to the shortcut and taskbar.

In addition to the responses here, I found that once you have assigned an Icon to your application by the first time you cannot toggle it by just adding a new icon to your stage (this would be helpful if you need to toggle the icon of your app from on/off enabled/disabled).

To set a new icon during run time use the getIcons().remove(0) before trying to add a new icon, where 0 is the index of the icon you want to override like is shown here:

To access the stage from other methods or classes you can create a new static field for stage in you main class so can access it from out of the start() method by encapsulating in on a static method that you can access from anywhere in your app.

источник

Icon и ImageIcon – использование иконок в Java Swing

Некоторые компоненты Java Swing поддерживают иконки. Например, у кнопок, текстовых меток или у пунктов меню могут быть установлены иконки. На рисунке можно посмотреть внешний вид тестового приложения, у которого для кнопки и для текстовой метки установлены иконки. Это стандартные иконки Java Swing.

Для установки иконки используется метод setIcon, которому в качестве параметра передается ссылка на Icon. Можно воспользоваться классом ImageIcon для загрузки своих собственных изображений. ImageIcon реализует интерфейс Icon, поэтому кактолько ImageIcon создан, можно смело передавать его методу setIcon. ImageIcon может использоваться для GIF, JPEG и PNG изображений. При создании объекта ImageIcon в качестве параметра конструктору необходимо передать путь к рисунку. Путь к рисунку может быть абсолютный или относительный.

Вообще есть несколько вариантов того, где должны храниться файлы рисунков. Первый вариант -приложение на Java для удобства распространения можно собирать в jar архив. Все рисунки также помещать jar архив. У такого варианта есть неоспоримый плюс, приложение – это один файл. Всё, что нужно приложению для успешной работы будет в этом jar файле. С другой стороны иногда полезно, чтобы рисунки и ресурсные файлы были доступны без каких-то хитрых манипуляций. В случае с jar файлом ресурсы также доступны, но нужно производить разархивацию (jar – это zip архив) , затем менять нужные файлы и в конце концов собирать обратно. Второй вариант — можно не выполнять компоновку всего приложения в jar фал, а написать некий bat’ник, который будет запускать Main класс приложения. И наконец третий — рисунки вынести в отдельную директорию, например images, которая будет находиться там же, где jar архив приложения. Посмотрим разные случаи.

Читайте также:  Установка ксенона в противотуманки киа спектра

Обратимся к коду тестового примера. Здесь имеется класс TestFrame. В той же директории, в которой находится TestFrame, располагается несколько рисунков. Требуется подгрузить их и отобразить в качестве иконок. Делается это при помощи вот такой конструкции.

Еще раз отмечу, при использовании такого метода необходимо, чтобы рисунки находились в той же директории, где и сам класс. Ну или путь к рисунку path должен быть, к примеру, “images/icon1.png”, а в директории, в которой располагается TestFrame должна находитться папка images с рисунком icon1.png. Например вот так рисунки располагались у меня в проекте, чтобы работал приведеный выше код.

Второй вариант – располагать рисунки вот так.

Приложение представляет собой архив text.jar, а рисунки располагаются в директории images, которая находится в той же директории, что и архив. Тогда загружать рисунки для иконок можно вот так.

В тестовом приложении используются оба метода загрузки изображений. Для первых двух иконок изображения достаются из jar архива приложения, для третьей – изображение берется из директории images. Внешний вид тестового приложения представлен на рисунке ниже.

источник

JavaFX наглядное создание простого приложения и нативная упаковка в Eclipse

Сегодня я вам расскажу, как поэтапно с нуля создать простое приложение на JavaFX, что для этого потребуется, покажу как сделать установщик Windows (msi) для вашего приложения.

Для начала нам потребуется среда разработки, будем использовать Eclipse, на данный момент самая последняя версия называется Neon (релиз 22 июня 2016 года) его можно скачать здесь.

Далее качаем инсталлятор, выбираем версию для Java разработчиков, будет предложен путь по умолчанию С:\Users\%USERNAME%\eclipse, экзешник будет лежать там в каталоге java-neon\eclipse.

После запуска Eclipse сразу будет предложено выбрать рабочую директорию, можно оставить дефолтную, только следите, чтобы путь до нее не содержал русских букв, в частности из-за %USERNAME%, иначе в дальнейшем могу возникнуть проблемы с этими путями. Если вы все-таки выбрали такую директорию в качестве рабочего пространства, не беда, ее можно поменять в последующем: File -> Switch Workspace -> Other…

Теперь для разработки JavaFX приложений и последующей сборки нам потребуется плагин для Eclipse, подробную инструкцию по установке можно найти здесь: www.eclipse.org/efxclipse/install.html

Важно! Перед тем как приступать к созданию приложения, необходимо стандартно применяемую JRE без компилятора поменять на JDK. Подключим предварительно скачанную JDK и сделаем ее дефолтной: заходим в настройки Window->Preferences:

Выбираем стандартную виртуальную машину:

Указывает путь к директории на вашем компьютере, где лежит, предварительно скаченная версия JDK:

После нажатия на Finish, устанавливаем JDK как дефолтный:

Также укажем ее как дефолтную для JavaSE-1.8:

Теперь приступим к самому интересному, создадим новый проект JavaFX File->New->Project…

Настраиваем проект, думаю тут все очевидно:

Напишем наше небольшое приложение (в директории с Main.java должны лежать: иконка favicon-16×16.png и звук click.wav):

Отлично, теперь нам надо запаковать это приложения для конечного пользователя, в корневой директории лежит предназначенный для этого файл build.fxbuild, который генерирует xml файл, использующийся в свою очередь сборщиком Ant, настроим этот файл:

Если нажать в правой части Generate ant build.xml only, то создается корневой папке создается конфигурационный билд для Ant build\build.xml перед тем, как запускать его, необходимо скачать Wix Toolset с ресурса: wix.sf.net (если генерируется exe, то для него требуется Inno Setup с ресурса jrsoftware.org) иначе Ant сгенерирует все, кроме нужного нам .msi в консоли при сборке напишет про это. После того как вы установили Wix, необходимо прописать в переменных среды путь к bin директории и перегрузить компьютер.

Читайте также:  Установка проекта proshow producer

После сборки появится установщик msi, который можно запускать (приложение по дефолты ставится в C:\Program Files\HabrApp):

Эта стать-памятка про нативную сборку установочного файла средствами Eclipse, она не разбирает тонкостей JavaFx. Всем спасибо за внимание.

источник

Установка иконки в javafx

117467 просмотра

1031 Репутация автора

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

Ответы (18)

47523 Репутация автора

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

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

721 Репутация автора

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

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

130 Репутация автора

Еще один простой способ вставить свой собственный значок в строку заголовка в JavaFX — добавить изображение на начальный этап, используя следующий метод:

Убедитесь, что вы импортируете javafx.scene.image.Image (если вы используете ide как netbeans, это должно быть сделано автоматически для вас).

17614 Репутация автора

Полная программа для начинающих 🙂 Эта программа устанавливает значок для StackOverflowIcon.

Выходной скриншот

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

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

3335 Репутация автора

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

1 Репутация автора

Я попробовал это, и это работает:

188 Репутация автора

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

11616 Репутация автора

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

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

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

39 Репутация автора

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

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

86 Репутация автора

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

17 Репутация автора

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

21 Репутация автора

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

19 Репутация автора

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

7 Репутация автора

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

1 Репутация автора

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

81 Репутация автора

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

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

51 Репутация автора

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

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

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

975 Репутация автора

Переключить значки во время выполнения:

В дополнение к ответам, приведенным здесь, я обнаружил, что, как только вы в первый раз назначили значок своему приложению, вы не можете переключать его, просто добавляя новый значок на сцену (это будет полезно, если вам нужно переключить значок вашего приложения). приложение из вкл / выкл включено / отключено).

Чтобы установить новый значок во время выполнения, используйте getIcons (). Remove (0), прежде чем пытаться добавить новый значок, где 0 — это индекс значка, который вы хотите переопределить, как показано здесь:

Чтобы получить доступ к рабочей области из других методов или классов, вы можете создать новое статическое поле для рабочей области в своем основном классе, чтобы получить к нему доступ из метода start (), инкапсулировав статический метод, к которому можно получить доступ из любой точки вашего приложения. ,

Читайте также:  Установка кэша растения против зомби

источник

code .makery

Статьи в этой серии

Скачать исходники

Языки

Часть 4: Стилизация с помощью CSS

Часть 4: Содержание

Стилизация с помощью CSS

В JavaFX с помощью каскадных таблиц стилей (CSS) можно стилизировать интерфейс пользователя. Это просто здорово! Ещё никогда не было так легко настроить внешний вид приложения Java.

В этом учебнике мы создадим тему DarkTheme, вдохновленную Метро-дизайном из Windows 8. Принятые стили для кнопок заимствованы из статьи JMetro — Windows 8 Metro controls on Java, написанной Pedro Duque Vieira.

Знакомство с CSS

Если вы хотите приукрасить внешний вид своего приложение JavaFX, то надо иметь хотя бы начальное представление о том, что такое CSS. Хорошее место для старта — этот учебник по CSS.

Для получения специфической информации об использовании CSS в JavaFX доступны следующие ресурсы:

Стиль, используемый в JavaFX по умолчанию

Стиль, который используется в JavaFX по умолчанию хранится в файле modena.css . Его можно найти в файле jfxrt.jar , который, в свою очередь, располагается в директории Java /jdk1.8.x/jre/lib/ext/jfxrt.jar .

Разархивируйте его и вы найдете modena.css в папке com/sun/javafx/scene/control/skin/modena .

Этот стиль всегда применяется по умолчанию для всех приложений JavaFX. Добавляя пользовательские стили мы переопределяем стили из файла modena.css .

Подключение пользовательских CSS-стилей

Добавьте файл DarkTheme.css в пакет view .

DarkTheme.css

Теперь надо подключить эти стили к нашей сцене. Мы можем сделать это программно, в коде Java, но в этом уроке, чтобы добавить стили в наши fxml-файлы, мы будем использовать Scene Builder:

Подключаем таблицы стилей к файлу RootLayout.fxml

В приложении Scene Builder откройте файл RootLayout.fxml .

Во вкладке Hierarchy выберите корневой контейнер BorderPane , перейдите на вкладку Properties и укажите файл DarkTheme.css в роли таблиц стилей.

Подключаем таблицы стилей к файлу PersonEditDialog.fxml

В приложении Scene Builder откройте файл PersonEditDialog.fxml . Во вкладке Hierarchy выберите корневой контейнер AnchorPane , перейдите на вкладку Properties и укажите файл DarkTheme.css в роли таблиц стилей.

Фон всё ещё белый, поэтому укажите для корневого компонента AnchorPane в классе стиля значение background .

Выберите кнопку OK и отметьте свойство Default Button в вкладке Properties. В результате изменится цвет кнопки и она будет использоваться по умолчанию когда пользователь, находясь в окне, будет нажимать клавишу Enter.

Подключаем таблицы стилей к файлу PersonOverview.fxml

В приложении Scene Builder откройте файл PersonOverview.fxml . Во вкладке Hierarchy выберите корневой контейнер AnchorPane , перейдите на вкладку Properties и укажите файл DarkTheme.css в роли таблиц стилей.

Вы сражу должны увидеть некоторые изменения: цвет таблицы и кнопок поменялся на чёрный. Все классы стилей .table-view и .button из файла modena.css были применены к таблице и кнопкам. С того момента, как мы переопределили некоторые из стилей в нашем css-файле, новые стили применяются автоматически.

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

Выберите правый компонент AnchorPane внутри компонента SplitPane .

Перейдите на вкладку Properties и укажите в классе стиля значение background . Теперь фон станет чёрного цвета.

Текстовые метки с другими стилями

Сейчас все текстовые метки с правой стороны имеют одинаковый размер. Для дальнейшей стилизации текстовых меток мы будем использовать уже определённые стили .label-header и label-bright .

Выберите метку Person Details и добавьте в качестве класса стиля значение label-header .

Для каждой метки в правой колонке (где отображаются фактические данные об адресатах) добавьте в качестве класса стиля значение label-bright .

Добавляем иконку приложения

На данный момент в нашем приложении в панели названия и панели задач используется иконка по умолчанию:

С пользовательской иконкой наше приложение будет выглядеть симпатичнее:

Файл иконки

Одно из возможных мест, где можно свободно скачать иконки — это сайт Icon Finder. Я скачал маленькую иконку адресной книги.

Создайте внутри вашего проекта AddressApp обычную папку resources, а в ней папку images. Поместите выбранную вами иконку в папку изображений. Структура папок должна иметь такой вид:

Установка иконки для сцены

Для того, чтобы для нашей сцены установить новую иконку, в классе MainApp.java добавьте следующий код в метод start(. )

MainApp.java

Весь метод start(. ) теперь будет выглядеть так:

Вы также можете добавить иконку в окно редактирования адресатов.

Что дальше?

В 5-й части учебника мы добавим для наших данных XML-хранилище.

источник