• Улучшенный 9-patch редактор

      Добрый день, Хабражитель!

      imageУверен с форматом nine-patch уже все давным-давно знакомы, вероятно даже не раз пользовались им в своих Android-проектах (а может даже и где-то ещё). Также о нём чуть менее года назад skkap писал небольшую статью о том, что это за формат, и «с чем его едят». Также он описал инструмент, предлагаемый для быстрого редактирования этих самых файлов.

      Собственно, прошёл уже почти год с того момента и я, опять наткнувшись на ту статью и вспомнив жалобы знакомых на неудобство этого самого «инструмента», решил посмотреть нет ли каких других вариантов и, к моему большому удивлению, я таковых не нашёл. Вероятно потому, что формат сам из себя ничего сложного и специфичного не представляет (при желании nine-patch файлы можно редактировать почти в любом графическом редакторе поддерживающем png) и тем более уже есть готовый инструмент (пусть и не самый удобный).

      Тут я и решил лично взяться за дело…

      Читать дальше →
    • Создаём свой Look and Feel — Часть I

      • Tutorial
      Добрый день, Хабражитель!

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

      Сегодня же я представлю на Ваш суд «последний рубеж» погружения во все те возможности, которые предлагает нам Swing – создание своего Look and Feel класса, а также всего того, что потребуется по ходу дела.

      Сразу скажу — если Вы хотите взяться за написание своего примера, а не просто «подсмотреть» пару интересных моментов — будьте готовы угробить потратить на это дело много времени, если Вы конечно собираетесь выпустить что-то более-менее живое и юзабельное в любых приложениях в качестве «обёртки», а также собираетесь в дальнейшем поддерживать созданный вами LaF.

      Но даже если Вы не собираетесь делать свой LaF – советую всё же ознакомиться с содержанием. Уверен Вы найдёте много нового и интересного. И даже, возможно, поймёте в чём был корень той или иной интерфейсной проблемы, которая, вероятно, мучала Вас долгие месяцы и годы.

      Tip: Если Вы не ещё не знакомы с графикой и Swing в Java более-менее тесно — советую сперва перечитать несколько статей на тему (к примеру оффициальный туториал, статью по Swing от Skipy или же мои предыдущие вводные статьи).

      Итак, подробнее под катом...
    • Углубляясь в Graphics2D

        Добрый день, Хабражители!

        Сегодня я опять постараюсь привлечь Ваше внимание к некоторым сторонам и тонкостям работы с графикой в Java. Я уже кратко описал в предыдущей статье некоторые доступные средства и способы создания компонентов и UI, но это лишь вершина айсберга. Именно поэтому я хочу уделить отдельное внимание (и статью) именно работе с графикой. Естественно имеется в виду Graphics2D – Java 3D это большая отдельная тема (возможно о ней еще пойдет речь в дальнейшем, но не сегодня).

        Итак, из предыдущей статьи Вам уже должны быть известны некоторые основы построения компонентов — постараемся расширить эти знания.

        Начнем с того, что если рассматривать любой компонент с точки зрения MVC – он состоит из 3ех частей:
        Model – модель, которая хранит в себе данные о состоянии компонента и на основе которой строится внешний вид
        View – непосредственно визуальное отображения компонента
        Controller – отвечает за управление компонентом (события от клавиатуры, мыши и прочих устройств ввода)

        Фактически, все стандартные компоненты Swing построены по паттерну MVC. К примеру в JButton — ButtonModel отвечает за поведение и состояние кнопки (Controller и Model), а ButtonUI в свою очередь за внешнее её представление (View). В итоге на долю самого класс JButton практически ничего не остаётся. Речь пойдет по большей части о реализации внешнего представления компонентов (View), и если уточнять — о Graphics2D, на основе которого, фактически, рисуется весь интерфейс.

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

        Читать далее...
      • Приложение под Хостинг Картинок

          Доброго времени суток, Хабражитель!

          Не так давно в этом же блоге Hombrelumbre опубликовал статью о своем стартапе — Хостинг Картинок.
          Многие из Вас оценили его за простоту и удобство, некоторые подумали или даже сказали вслух: «Очередной заурядный хостинг картинок, только без рекламы… и то пока-что».

          Лично меня этот новый, лишенный всякой назойливой рекламы и вооруженный опрятным интерфейсом сервис подтолкнул к написанию десктоп-клиента с учетом всего того, чего мне и вероятно всем другим не хватало в подобных сервисах. Если конкретизировать:
          • Быстрота и простота добавления и загрузки картинок
          • Возможность просматривать и при необходимости удалять свои изображения, размещенные на сервисе
          • Возможность синхронизации изображений между различными машинами
          • Никакой лишней возни с настройками и мелочами без острой на то необходимости
          • Опрятный и удобный интерфейс, позволяющий быстро выполнять необходимые операции
          • Некоторые дополнительные возможности, которые избавят от необходимости использовать сторонний софт (в разумных пределах, естественно)

          Итак, после недолгого обсуждения данной идеи с владельцем хостинга мы пришли к согласию и за пару-тройку выходных (и несколько бессонных ночей) не без помощи Hombrelumbre и его брата накидал дополнение к ресурсу для простой и быстрой загрузки изображений на Хостинг Картинок…
          Читать дальше →
        • Улучшаем интерфейс Java-приложения

          • Tutorial
          Добрый день, Хабражитель!

          Достаточно много различной раздробленной информации существует на тему работы со Swing и графикой в просторах интернета, а также на тему интерфейсов Java-приложений. Кто-то твердит о том, что Java морально устарела и десктоп-приложения на Java не имеет смысла писать, кто-то с пеной у рта доказывает обратное. В то же время работа идет, приложения пишутся и встают очередные проблемы. В предыдущей статье я уже привел небольшой список полезных библиотек для исключительных случаев, но нередко бывает так, что никакая сторонняя библиотека не позволяет сделать то, что Вам нужно. Именно в такой момент стоит задуматься о возможной необходимости написания своих компонентов.

          Итак, в данном посте я постарался изложить самые важные и значимые на мой взгляд моменты по работе со Swing и графикой — как создавать компоненты, как стилизовать интерфейс, чего делать не стоит и многое другое…

          Читать дальше →
        • Расширяем возможности Java-приложения

          Здраствуй, Хабражитель!

          Вот уже несколько лет проработав над разными десктопными Java-приложениями и в очередной раз копаясь в своих залежах полезных библиотек я понял, что настал момент немного структурировать всю накопившуюся коллекцию и выкинуть лишнее. Заодно, захотелось выделить из нее наиболее редкие экземпляры и дописать небольшие пояснения к ним (что, где и как работает), чтобы при необходимости быстро и легко использовать нужную часть. Собственно информацией о некоторых особо выделяющихся библиотеках из коллекции мне и захотелось поделиться с Вами — вдруг кому-то это окажется интересным или даже полезным.

          Итак, сегодня я приведу здесь библиотеки, которые могут Вам помочь решить часто возникающие вопросы вроде «Как сделать это на Java?» по разным узким направлениям разработки.

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

          Читать дальше →