Есть ли внешний вид java, основанный на концепции плоского дизайна?

У меня есть 5 java-систем для разработки, интерфейс которых был разработан с использованием Swing.

Мы начали разработку этих систем около 10 лет назад, и они имеют около 300 тыс. строк кода. Все эти системы находятся в рабочей среде.

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

Что общего у пользователей мобильных телефонов, планшетов и веб-сайтов? Их взгляд основан на концепции плоского дизайна.

Итак, мы начинаем исследование, чтобы найти недорогие альтернативы, чтобы придать нашим системам современный вид, ориентированный на плоский дизайн.

Первым, по нашему мнению, был поиск java L & F, который реализован на основе концепции плоского дизайна. Но мы не нашли его.

Кто-нибудь знает, есть ли внешний вид java, основанный, в частности, на концепции плоского дизайна?

С уважением, Клаудиа.

Ответ 1

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

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

Некоторые возможные варианты, ни одна из которых не будет иметь большой боли:

  • Выберите один из двух встроенных параметров L & F или установите его по умолчанию для платформы (ваше приложение выглядит как родное платформа), хотя вам придется отлаживать приложение на каждой платформе отдельно, чтобы убедиться, что пользовательский интерфейс работает последовательно. По крайней мере, с этой опцией, если вы установите для нее платформу по умолчанию, приложение будет выглядеть примерно как родное приложение для любой ОС.
  • Посмотрите на SWT - вероятно, в долгосрочной перспективе это не стоит - вы просто торгуете одним набором ситуаций, отличных от идеи, для другой, я думаю, но хорошо, по крайней мере, получить образование по поводу ваших вариантов.
  • Стиль L & F с CSS - никогда не пробовал это сам - но, возможно, стоит посмотреть. Но лично я бы не стал инвестировать в больше время привязки вашего приложения к Swing, если вы можете его избежать. Как вы видели, это один из тех ужасных рабочих мест.
  • Поставьте свое приложение в качестве веб-приложения, которое, я уверен, является серьезным перепроектированием, и просто пользователи получают доступ к нему через браузер. Я понимаю, что это, вероятно, "ядерный вариант" и совершенно нереалистичен, но просто выбрасывает его там.
  • Подсоедините его и пусть ваше приложение будет выглядеть как дерьмо. В мире существуют худшие судьбы.

Ответ 2

Быстрый способ заставить старое приложение swing выглядеть новым, это изменить его внешний вид и ощущение.

Внешний вид Nimbus выглядит ОК enter image description here

Ознакомьтесь с Oracle Учебник по Look and Feel, чтобы узнать, как изменить его или создать свой собственный.

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

Здесь, как перейти на Нимб:

try {
    //recommended way to set Nimbus LaF because old versions of Java 6
    //don't have it included
    for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
       if ("Nimbus".equals(info.getName())) {
           UIManager.setLookAndFeel(info.getClassName());
           break;
        }
    }
} catch (Exception e) {
    // If Nimbus is not available, you can set the GUI to another look and feel.
}