Афоризм
Сейчас я расшатаю Вам здоровье.
Наталья Резник
Последние статьи

 • Библиотека jQuery
Описание библиотеки jQuery, подключение jquery.min.js
 • Селектор jQuery
Описание селектора jQuery, выбор элементов DOM
 • Фильтрация выборки
Фильтрация наборов jQuery и поиск элементов : filter, find
 • CSS и jQuery
Управления стилями методами css, addClass, removeClass
 • Советы программистам
instanceOf, valueOf vs new, generic, поддержка ПО
 • Советы программистам
Валидация даты, конкатенация строк
 • Домашние финансы
Приложение учета домашних финансов
 • Сохранение значений
Сохранение и восстановление значений компонентов
 • APK-файл Android
Создание apk-файла для android устройств, .dex файлы
 • Загрузка драйвера
Динамическая загрузка JDBC-драйвера
 • платформа JaBricks
Платформа OSGi-приложения JaBricks
 • уроки JaBricks
Учебные примеры изучения платформы Jabricks
 • бандлы JaBricks
Бандлы приложения JaBricks
Поддержка проекта

Если Вам сайт понравился и помог, то будем признательны за Ваш «посильный» вклад в его поддержку и развитие
 • Yandex.Деньги
  410013796724260

 • Webmoney
  R335386147728
  Z369087728698

Библиотека компонентов

Библиотека компонентов gui-widgets предназначена для формирования графического интерфейса как desktop'ных Swing-приложений, так и приложений на платформе Jabricks. Библиотека выполнена по технологии OSGi и содержит следующий набор визуальных компонентов :

Компонент Описание
Grid Табличный компонент представления ограниченного количества записей в интерфейсе приложения. API Grid позволяет управлять записями (добавлять, обновлять, удалять) и определить в таблице редактируемую колонку с компонентом JCheckBox для выделения записей.
Gridp Табличный компонент с панелью навигации предназначен для постраничного разбиения записей и представления в интерфейсе неограниченного количества записей. API Gridp позволяет управлять записями (добавлять, обновлять, удалять).
Tree Компонент дерева представляет в интерфейсе приложения иерархическую многоуровневую структуру записей. API дерева (ITree) позволяет добавлять, обновлять и удалять записи в дереве. При выделении записи вызывается callback-функция.
ToolButtonsПанель с набором вертикально располагаемых кнопок, выполняющих роль панели инструментов. API данного виджета позволяет адаптировать интерфейс панели и кнопок (размер, шрифт, цвет и т.д) под заданные требования, а также выделить подсветкой одну из кнопок в наборе.
JDatePickerКомпонент представляет текстовое поле с кнопкой, при нажатии на которую открывается окно с календарем для выбора даты. Интерфейс календаря локализован для русского, английского и немецкого языков, и позволяет определить первый день недели [Воскресенье, Понедельник].
IntegerField
FloatField
DoubleField
Компоненты представления числовых значений.

Примечание : библиотека визуальных компонентов gui-widgets имеет прототип base-gui, представленный и подробно описанный на сайте, включая примеры использования. Отличия касаются только возможности использования библиотеки gui-widgets в OSGi-приложении и дополнительного включения в библиотеку панели с набором вертикально располагаемых кнопок ToolButtons, а также интерфейса org.jabricks.widgets.constants.IWidgetsConstants, включающего константы как для создания интерфейса, так и межмодульного взимодействия при реализации механизма «публикация/подписка». Описанные в библиотеки base-gui примеры можно также использовать с библиотекой gui-widgets; необходимо только правильно определить наименования пакетов.

Описание библиотеки

Список классов, интерфейсов и ресурсов библиотеки представлен в таблице по-пакетно :

org.jabricks.widgets : активатор модуля
widgetsActivatorактиватор модуля
org.jabricks.widgets.numberfields : компоненты числовых значений
DoubleFieldкласс представления числовых значений типа Double
FloatFieldкласс представления числовых значений типа Float
IntegerFieldкласс представления числовых значений типа Integer
org.jabricks.widgets.grid : таблица Grid
IGrid интерфейс методов таблицы
Grid компонент таблицы, реализующий интерфейс IGrid
GridModel модель данных таблицы, расширяющая свойства класса AbstractTableModel
CheckBoxCellEditorредактор логического значения ячейки таблицы, расширяющий (extends) свойства класса DefaultCellEditor
BooleanListener слушатель изменений логических значений ячеек, реализующий (implements) интерфейс TableModelListener
org.jabricks.widgets.gridp : таблица Gridp с панелью навигации
IGridp интерфейс методов таблицы с панелью навигации
Gridp компонент таблицы с панелью навигации, реализующий интерфейс IGrid
GridpModel модель данных таблицы с панелью навигации, расширяющая свойства класса AbstractTableModel
IPaginator интерфейс описания методов панели навигации
Paginator компонент панели навигации
PaginatorConfigконфигуратор панели навигации
org.jabricks.widgets.tree : дерево Tree
ITree интерфейс методов дерева Tree
ITreeListener интерфейс методов слушателя Tree
Tree компонент Tree, реализующий функции интерфейса ITree
TreeRecord базовый класс представления записей в дереве Tree
org.jabricks.widgets.toolbuttons : ToolButtons панель инструментов
ButtonItem компонент кнопки
IButtonsListener интерфейс описания родительского слушателя события нажатия на кнопку
ToolButtons виджет панели инструментов из вертикально раполагаемых кнопок
org.jabricks.widgets.constants : интерфейсные константы
IWidgetsConstantsинтерфейс описания констант
org.jabricks.widgets.renderers : визуализаторы табличных значений
BaseRenderer базовый класс для представления значений в ячейках таблицы
BooleanRenderer класс для представления логических значений в ячейках таблицы
DateRenderer класс для представления значений типа Date в ячейках таблицы
DoubleRenderer класс для представления значений типа Double в ячейках таблицы
FloatRenderer класс для представления значений типа Float в ячейках таблицы
IntegerRenderer класс для представления значений типа Integer в ячейках таблицы
StringRenderer класс для представления значений типа String в ячейках таблицы
TimeRenderer класс для представления значений типа Time в ячейках таблицы
TimestampRendererкласс для представления значений типа Timestamp в ячейках таблицы
org.jdatepicker.* : компонент JDdatePicker для выбора даты из календаря
JDdatePickerкомпонент определения даты с возможностью использования календаря в отдельном окне
resources : ресурсы модуля
imagesизображения, используемые в панели навигатора табличного компонента Gridp и при отображении записей в иерархической структуре дерева Tree
propertiesлокализованные надписи для панели навигатора табличного компонента Gridp

Активатор модуля, org.jabricks.widgets

Активатор модуля WidgetsActivator включает «пустые» методы start и stop. Основная функция активатора связана с формированием бандла (bundle) по технологии OSGI.

Компоненты числовых значений, org.jabricks.widgets.numberfields

Компоненты представления числовых значений в интерфейсе приложения : IntegerField, FloatField, DoubleField. Описания компонентов и примеры их использования представлены на странице Числовые компоненты библиотеки прототипа base-gui.

Таблица Grid, org.jabricks.widgets.grid

Табличный компонент предназначен для представления ограниченного количества записей в интерфейсе приложения. Компонент таблицы локализован и позволяет без «перезагрузки» формы определить заголовки колонок таблицы согласно текущему значению языка локализации. Классы визуализаторов позволяют настроить представление значений разных типов в ячейках таблицы. API Grid, представленное на странице прототипа библиотеки base-gui, позволяет управлять записями (добавлять, обновлять, удалять) и организовать в таблице редактируемую колонку с компонентом JCheckBox для выделения записей. Использование таблицы в java-приложении рассмотрено на странице описания примера Grid прототипа библиотеки. Создание редактируемой колонки с возможностью выделения записей рассмотрено в примере JCheckBox в таблице.

Таблица Gridp с панелью навигации, org.jabricks.widgets.gridp

Табличный компонент Gridp с панелью навигации предназначен для постраничного разбиения записей и представления в интерфейсе неограниченного количества записей. Как правило, данный компонент следует использовать для просмотра записей «рабочих» таблиц с большим набором данных. Также, как и для обычной таблицы Grid, данный компонент позволяет заменить используемые по умолчанию визуализаторы записей.

Компонент Gridp отображает в таблице набор данных в виде одной страницы. Представленное на странице прототипа библиотеки API Gridp демонстрирует возможности управления записями (добавление, обновление, удаление) и включает методы, вызываемые компонентом для перемещения по страницам. Разработчик должен переопределить данные методы для чтения записей определенной страницы в хранилище (сервере БД).

Пример Gridp прототипа библиотеки демонстрирует возможности таблицы панелью навигации и включает исходные коды.

Дерево Tree, org.jabricks.widgets.tree

Компонент дерева Tree позволяет представить в интерфейсе приложения иерархическую многоуровневую структуру записей, основой которых является класс TreeRecord. API дерева (ITree) позволяет добавлять, обновлять и удалять записи в дереве. При выделении записи в дереве вызывается callback-функция интерфейса ITreeListener, передающая родителю выбранный объект. Подробное описание визуального компонента Tree представлено на странице примера API Tree прототипа библиотеки base-gui. Использование Tree в java-приложении рассмотрено на странице описания пример Tree.

Панель кнопок инструментов, org.jabricks.widgets.toolbuttons

Панель с набором вертикально располагаемых кнопок ToolButtons, выполняющих роль панели инструментов, имеет API, которое позволяет адаптировать интерфейс как панели, так и кнопок (размер, шрифт, цвет и т.д), под заданные требования, а также выделить подсветкой одну из активных кнопок в наборе. ToolButtons имеет два конструктора; второй конструктор в качестве параметра получает «слушателя» IButtonsListener. Слушатель представляет родительский класс, единственный метод которого onButtonItemClick (String) вызывается при нажатии на одну из кнопок панели инструментов. В метод onButtonItemClick (String) передается наименование/заголовок нажимаемой кнопки.

public ToolButtons ();
public ToolButtons (final IButtonsListener listener);

В таблице представлены методы ToolButtons, которые можно использовать для формирования интерфейса панели вертикально расположенных кнопок :

МетодОписание
Общие методы
void setBackgroundColor (Color) Метод определения фона панели.
void setWidth (int) Метод определения ширины панели инструментов.
void setVerticalLayout (VerticalLayout) Определение шаблона размещения конопок. Шаблон библиотеки VerticalLayout позволяет определить отступы кнопки от левого края и от верхней кнопки, либо верхнего края первой кнопки; по умолчанию используются значения 5 и 10.
void setButtonItems(String[] names,
String[] texts,
ImageIcon[] icons)
Метод создания набора кнопок и размещения их на панели инструментов. Каждой кнопки присваивается наименование, текст. На кнопке может размещаться иконка.
Методы определения заголовка панели инструментов.
void addTitle(String) Метод размещения на панели инструментов располагаемого в верхней части заголовка.
void setTitleForegroundColor (Color) Метод определения цвета заголовка.
void setTitleBackgroundColor (Color) Метод определения фона титульной строки панели.
void setTitleText(String) Метод определения текста заголовка.
void setTitleHeight(int) Метод определения высоты заголовка.
void setTitleFont(Font) Метод определения шрифта заголовка
Методы определения интерфейса кнопок
void setButtonItemSize(int width,
int height)
Метод определения размеров кнопок панели.
void setColor (Color color_fg,
Color color_bg)
Метод определения цвета кнопки (надпись и фон).
void setMouseEnteredColor (Color color_fg,
Color color_bg)
Метод определения цвета при наведении курсора на кнопку (надпись и фон).
void setSelectedColor (Color color_fg,
Color color_bg)
Метод определения цвета выделения кнопки в активном состоянии (надпись и фон).
void selectButtonItem(String name) Метод выделения кнопки name; остальные кнопки деактивируются.
void setButtonItemsText(Properties) Метод обновления текстовых надписей кнопок согласно ресурсам в Properties. Значения в Properties имеют формат key=value, где key определяет наименование кнопки.
String getSelectedButtonItem() Метод получения выделенной кнопки.

Пример использования компонента ToolButtons представлен в примере ExampleToolbuttons :

Пример использования ToolButtons

Листинг
import java.awt.Font;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.BorderLayout;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.ImageIcon;
import javax.swing.BorderFactory;
import javax.swing.border.Border;

import org.jabricks.widgets.common.VerticalLayout;
import org.jabricks.widgets.toolbuttons.ToolButtons;
import org.jabricks.widgets.toolbuttons.IButtonsListener;

public class ExampleToolbuttons extends JFrame 
                                implements IButtonsListener
{
    private  ToolButtons  bp = null;

    private  final  String[]  UNITS_names = {"btnCash",
                                             "btnBank",
                                             "btnEmoney"};
    private  final  String[]  UNITS_text  = {"Cash",
                                             "Bank",
                                             "Emoney"};
    private  final  ImageIcon[]  UNITS_icons = {
                       null, // new ImageIcon("D:/db.png"),
                       null, // new ImageIcon("D:/ln.png"),
                       null};
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    public ExampleToolbuttons()
    {
        super("Toolbuttons example");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setSize(640, 480);
        createGUI();
        setVisible(true);
    }
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    private void createGUI()
    {
        JPanel pnl = new JPanel();
        pnl.setBackground(Color.blue);

        bp = new ToolButtons(this);
        bp.addTitle("Список счетов");
        bp.setTitleHeight(36);
        bp.setTitleFont(new Font("Arial", Font.BOLD, 14)); 
        bp.setVerticalLayout (new VerticalLayout(8, 10));

        bp.setButtonItems(UNITS_names, 
                          UNITS_text,
                          UNITS_icons);
        getContentPane().add(pnl, BorderLayout.CENTER);
        getContentPane().add(bp , BorderLayout.WEST);
    }
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    @Override
    public void onButtonItemClick(String name)
    {
        bp.selectButtonItem(name);
        System.out.println("selectedButtonItem = " + 
                            bp.getSelectedButtonItem());
    }
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    public static void main(String[] args)
    {
        new ExampleToolbuttons();
    }
}

Интерфейсные константы, org.jabricks.widgets.interface

Интерфейс IwidgetsConstants включает набор констант для формирования интерфейса и организации межмодульного взаимодействия бандлов OSGi-приложениий по технологии «публикация/подписка». Модификаторы public final для всех констант в листинг не включены, чтобы не загромождать описание. Комментарии к константам недвусмысленно говорят об их назначении в приложении.

Листинг
public interface IWidgetsConstants 
{
    String  EMPTY           = ""   ;
    String  POINT           = "."  ;
    String  COMMA           = ","  ;
    String  COLON           = ":"  ;
    String  SEMICOLON       = ";"  ;
    String  LF              = "\n" ;
    String  SPLIT_point     = "\\.";
    String  SLASH           = "/"  ;
    String  SPACE           = " "  ;
    String  EQUAL           = "="  ;
    String  LOW_LINE        = "_"  ;
    String  ENCODING_UTF8   = "UTF-8";

    String   GUI_dir        = "gui/" ;
    String   EXT_xml        = ".xml" ;
    String   dbObject_table = "table";
    String   dbObject_view  = "view" ;

    // Константы объекта локализаций интерфейса
    String  LANG_ru         = "ru" ;
    String  COUNTRY_RU      = "RU" ;
    String  LANG_en         = "en" ;
    String  COUNTRY_EN      = "US" ;
    String  LANG_de         = "de" ;
    String  COUNTRY_DE      = "DE" ;

    // Константы протоколирования сообщений
    int     LOG_LEVEL_SQL   = 5    ;
    int     LOG_LEVEL_OSGi  = 6    ;

    // Шаблоны протоколируемых  сообщений
    String  LOG_EVENT_topic = " get event on topic : "     ;
    String  LOG_EVENT_prop  = " : propertyName (%s) = %s"  ;
    String  LOG_EVENT_send  = " : send '%s'"               ;

    String  LOG_MSG_create  = "DB Object '%s' was created" ;

    // Размер разделителя панелей (по ширине)
    int     DIVIDER_SIZE    = 6;  
    
    // Ресурсные константы
    String  RESOURCES_props = "properties/props"           ;
    String  EXT_properties  = ".properties"                ;
    String  RESOURCE_title  = "title"                      ;

    // Настройки приложения
    String INI_page_records = "page.records"               ;
    String INI_date_format  = "date.format"                ;
    String INI_money_format = "money.format"               ;

    // Директория конфигурации приложения
    String  DIR_config      = "configuration/"             ;
    
    String  BUNDLE_id       = "bundle.id"                  ;
    String  BUNDLE_SN       = "bundle.symbolicName"        ;
    String  BUNDLE_VERSION  = "bundle.version"             ;

    // Сообщения межмодульного обмена информацией
    String  EVENT_locale    = "jabricks/LocaleEvent"       ;
    String  EVENT_connect   = "jabricks/DBConnect"         ;

    String  EVENT_request   = "jabricks/Container/Request" ;
    String  EVENT_response  = "jabricks/Container/Response";

    String  EVENT_mode_req  = "jabricks/GuiMode/Request"   ;
    String  EVENT_mode_resp = "jabricks/GuiMode/Response"  ;

    String  EVENT_pnl_req   = "jabricks/Panel/Request"     ;
    String  EVENT_pnl_resp  = "jabricks/Panel/Response"    ;

    // Константы сообщений
    String  PROP_locale     = "locale"                     ;
    String  PROP_connect    = "connect"                    ;
    String  PROP_container  = "container"                  ;

    // Константа отображения надписей в «нормальном стиле»
    String  SPAN_normal = "<html> span "
                        + "<style=\"font-weight:normal\">";
}

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

Визуализаторы табличных значений, org.jabricks.widgets.renderers

Используемые по умолчанию визуализаторы записей таблиц Grid и Gridp реализуют (implements) функции интерфейса TableCellRenderer и расширяют (extends) свойства метки типа JLabel. Это позволяет выравнивать значения в колонках для каждого типа либо по левому/правому краю, либо по центру. Кроме этого, визуализаторы позволяют определить подсветку выделенных строк/ячеек таблиц.

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

Компонент JDdatePicker для выбора даты из календаря, org.jdatepicker.*

Компонент JDatePicker представляет текстовое поле с кнопкой, при нажатии на которую открывается окно с календарем для выбора даты. В основе компонента лежит код, созданный группой разработчиков Juan Heyns, JC Oosthuizen, Yue Huang. Доработанный компонент локализован для русского, английского и немецкого языков, позволяет определить первый день недели [Воскресенье, Понедельник]. Кроме этого, выпадающее окно календаря автоматически привязывается к правому/левому краю текстового поля даты в зависимости от расположения компонента на экране.

Подробное описание компонента представлено на странице API JDatePicker прототипа библиотеки base-gui. Использование компонента в java-приложении рассмотрено на странице описания примера JDatePicker.

Ресурсы модуля, resources

Ресурсы модуля base-gui.jar в виде файлов изображений (*.png) и файлов свойств (*.properties) располагаются в директории resources/images и resources/properties. Файлы изображений используются в панели навигации табличного компонента Gridp, в компоненте даты JDatePicker, при отображении записей в иерархической структуре дерева Tree. Файлы свойств хранят локализованные надписи 3-х языков («ru» русский, «en» английский, «de» немецкий) для панели навигации таблицы Gridp и компонента даты JDatePicker.

API компонента Tree включает методы для использования других/собственных изображений узлов дерева.

Отличия версии 1.0.2

Библиотека компонентов версии 1.0.2 реализует свойства своих предшественников и дополнительно включает следующие методы, используемые для именования таблиц Grid, Gridp :

public interface org.jabricks.widgets.grid.IGrid 
{
    . . .

	public  void    setGridName(final String name);
	public  String  getGridName();

    . . .
}

public interface org.jabricks.widgets.gridp.IGridp 
{
    . . .

	public  void    setGridName(final String name);
	public  String  getGridName();

    . . .
}

Данные методы облегчают процесс именования табличных компонентов типа Grid, Gridp, необходимого при реализации функции сохранения и восстановления значений.

Зависимости

Модуль gui-widgets имеет следующие зависимости, определенные в секции Import-Package манифеста (MANIFEST.MF) и загружаемые фреймворком при старте приложения :

  • org.osgi.framework – фреймворк Felix
  • javax.swing.*, javax.imageio классы пакетов

В секции Export-Package манифеста (MANIFEST.MF) определены следующие доступные в приложении OSGi пакеты

  • org.jabricks.widgets.* – представленные выше визуальные компоненты;
  • org.jdatepicker.* – компонент выбора даты из календаря

Подключение модуля к приложению

Для подключения бандла gui-widgets в приложение Jabricks достаточно :

  • разместить модуль в поддиректории «configuration/bundles/»;
  • внести в файл инициализации бандлов «bundles.ini» запись : gui-widgets-1.0.2.jar;

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

GAV параметры

GAV параметры модуля gui-widgets имеют следующие значения :

• groupId : org.jabricks.widgets
• artifactId : gui-widgets
• version : 1.0.2

Подробнее о включении модуля в приложение Jabricks представлено здесь.

Скачать gui-widgets

Рассмотренный на странице модуль с компонентами формирования графического интерфейса gui-widgets упакован в архивный файл gui-widgets-1.0.2.zip (104 Кб).

  Рейтинг@Mail.ru