2012-05-12 2 views
3

Я только что понял, что в разных версиях Windows и для разных целей используются значки разного размера. Например, значок в строке заголовка окна намного меньше, чем значок панели задач программы, особенно в Windows 7.Различные размеры значков для ОС в Java

Я нашел Which icon sizes should my Windows application's icon include? очень полезный список размеров значков, которые используются Windows, но я не знаю, как их обеспечить, чтобы Windows могла выбрать необходимый размер для определенных задач.

Я был бы признателен за любые советы или помощь от любого лица по этому вопросу. Я не знаю, насколько я поняла себя, поэтому, если кто-то хочет, чтобы я прояснил все, пожалуйста, не стесняйтесь спрашивать.

Кроме того, если кто-нибудь знает, применимо ли это к Mac или как я могу приспособить его к моему коду, чтобы он применился к OS X, пожалуйста, не могли бы вы мне это рассказать.

UPDATE: Это для моего Java приложения Swing-

+0

BTW - вы со ссылкой на Swing, или на основе AWT GUI, или что-то другое? –

+0

Извините, я использую Swing! – Andy

ответ

10

См. Window.setIconImages(List). В зависимости от возможностей платформы в качестве значка окна можно использовать одно из нескольких изображений разных размеров. В потоке File Browser GUI есть пример. На этом изображении показана маленькая иконка, используемая для графического интерфейса пользователя, а большая - при использовании alt-tabbing между окнами.

Если изображение не квадрат, Windows будет подушечка его.

Java Web Start предлагает аналогичные варианты для значков нескольких размеров для использования в ярлыках на рабочем столе & элементов меню.


Re: картинки с именем:

  1. fb-icon-16x16.pngfm-icon-16x16.png
  2. fb-icon-32x32.pngfm-icon-32x32.png

..Это не имеет значения, на именах файлов или что угодно - окна просто выбирает значки на основе размера изображения?

Да, имена файлов были выбраны так, чтобы включать информацию о размере в интересах разработчиков. Мы могли бы назвать изображения:

  • icon-small.png
  • icon-medium.png

.. и он будет работать так же. JRE будет основывать свой выбор на фактическом размере изображения, измеренном после загрузки. Однако я настоятельно рекомендую добавить что-то вроде -16x16 в имена изображений изображений, чтобы сделать его явным. Размер «маленькой иконки» изменяется со временем & через устройства.

Что произойдет, если вы не представите несколько размеров?

Система JRE или система масштабирует одно изображение в соответствии с алгоритмом, который не находится под контролем разработчика. Например, как указано выше.

Если изображение не прямоугольное, Windows будет его заполнять.

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

OTOH, AFAIU OS X не отображает значки рам. По дизайнерскому решению. Я не знаю, приведет ли это к тому, что значок не появляется вообще. Вам нужен совет Mac. гуру для лучшей информации. на том.

Поскольку системы делают свои (не обязательно оптимальные) решения о том, как масштабировать значки, лучше всего взять как можно меньше шансов, & попытаться предоставить иконку нужного размера для каждой платформы. Вам повезло, если у них есть общий размер или 3.

Смотрите также:Sizes of frame icons used in Swing Q & А.

+0

Спасибо за это Андрю. Как всегда, блестящий ответ и хороший пример. Чтобы быть уверенным, что это не имеет значения в именах файлов или что-то еще - окна просто выбирают значки на основе размера изображения? – Andy

+0

Да, имена файлов были выбраны для включения информации о размере в интересах ** разработчиков. ** Мы могли бы назвать изображения 'icon-small.png',' icon-medium.png' .. и он будет работать одна и та же. JRE будет основывать выбор на фактическом размере изображения, как измеряется после загрузки. Однако я настоятельно рекомендую добавить что-то вроде '-16x16' в имена изображений значков, чтобы сделать его явным. Размер «маленькой иконки» изменяется с течением времени и между устройствами. ;) –

+0

Спасибо, что подтвердили это. Я собирался включить размер в имя файла для моей выгоды в любом случае, но я просто проверял. Просто любопытство, что происходит, когда вы не предоставляете несколько размеров? – Andy

2

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

+0

Какой формат, порядок и/или имена должны иметь изображения. И что вы подразумеваете под «на оболочке» – Andy

+0

Вы выглядите так, как использовать swing для разработки java-приложения. Пожалуйста, используйте API: Window.setIconImages (Список) – user1112699

+0

Да. Извините, я не включил эту деталь в свой вопрос. Я использую Swing. Ответ Эндрю Томпсона помогает мне прямо сейчас, но большое спасибо за ваше. – Andy

Смежные вопросы