2017-01-22 23 views
0

Два вопроса:Как вставить в NatTable ячейку два текста (каждый с другим шрифтом) и одно изображение? и установить поля?

1) Как вставить в NatTable ячейку два текста (каждый с другим шрифтом) и изображение?

2) как установить поля как изображение ниже?

В следующих случаях:

а) С помощью Java 1.6 (нет RichTexCellEditor, No CSS).
b) Использование java 1.7 (с RichTexCellEditor, без css).
c) Использование java 1.8 (с RichTexCellEditor, css).

Image example

Большое спасибо заранее.

ответ

0
  1. Стиль NatTable основан на стилях и художниках, как описано в [1]. Для получения дополнительной информации о настройке NatTable и о начале работы с NatTable ознакомьтесь с нашим учебным пособием по началу работы [2]
  2. Чтобы создать комбинацию, подобную запрошенной, необходимо зарегистрировать комбинацию ICellPainter.
  3. Чтобы добавить отступы (не маржу) между границей ячейки и содержания, использования PaddingDecorator
  4. Для добавления изображения в дополнение к тексту, используйте CellPainterDecorator, который имеет художник для текста как основы и ImagePainter как декоратор.
  5. Оказание текста с различными шрифтами поддерживается только RichTextCellPainter расширения NatTable Nebula Extension. Для этого требуется Java 1.7.
  6. Стилизация CSS в NatTable используется для создания конфигурации стиля с помощью CSS. Несмотря на это, никакой дополнительной поддержки нет. Поддержка CSS содержится в расширении NatTable E4, которое требует Java 1.8. Объяснение можно найти в 1.4 Новой & Примечательна странице [3]

Таким образом, ответ а): Предоставление текста с двумя различными шрифтами не поддерживается NatTable Ядра, поэтому вам необходимо реализовать пользовательские ICellPainter что будет поддерживать это.

Ответ б) заключается в создании сложного художника и зарегистрировать его, как это:

configRegistry.registerConfigAttribute(
    CellConfigAttributes.CELL_PAINTER, 
    new BackgroundPainter(
      new PaddingDecorator(
        new CellPainterDecorator(
          new PaddingDecorator(new RichTextCellPainter(), 10, 0, 0, 0), 
          CellEdgeEnum.LEFT, 
          new ImagePainter()), 
        2, 5, 2, 5)), 
    DisplayMode.NORMAL, 
    ColumnLabelAccumulator.COLUMN_LABEL_PREFIX + 0); 

Если в приведенном выше примере означает, что есть столбец метки, применяемые ColumnLabelAccumulator и художник должен быть настроен только для первый столбец. Также обратите внимание, что для стиля конкретной ячейки потребуется атрибут CellStyleAttributes.IMAGE, который затем будет отображаться ImagePainter. Если изображение должно быть исправлено, его необходимо установить как параметр конструктора.

Конечно, содержание должно содержать необходимую разметку HTML для рендеринга разных шрифтов. Что-то вроде:

<p><strong><span style="font-size:14px">This is a test</span></strong></p> 
<p><span style="color:rgb(128, 128, 128)"><span style="font-size:12px">This is a test</span></span></p> 

Ответ на c) не так уж и тривиален. Сначала сложная структура художника, показанная выше, не может быть выполнена с помощью CSS.Причина в том, что необходимо настроить несколько прокладок, которые не поддерживаются NatTable CSS. Во-вторых, RichTextPainter не известен расширению E4. Поэтому его необходимо зарегистрировать вручную на CellPainterFactory, например.

CellPainterFactory.getInstance().registerContentPainter(
    "richtext", 
    (painterProperties, underlying) -> { 
     return new RichTextCellPainter(); 
    }); 

где обработка дополнительных атрибутов должна быть рассмотрена как-то.

В CSS это будет выглядеть как-то так:

painter: background padding decorator richtext; 
decoration: left url('./nebula_logo_16.png') 5 true; 
padding: 2 5; 

[1] https://www.eclipse.org/nattable/documentation.php?page=styling
[2] http://www.vogella.com/tutorials/NatTable/article.html
[3] https://www.eclipse.org/nattable/nandn/nandn_140.php

+0

Как центрировать текст в RichTextCellPainter по горизонтали и/или вертикально без использования прокладки? Заранее спасибо. – ADeveloper

+0

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