2017-01-22 1 views
0

Zwei Fragen:Wie fügt man in die NatTable-Zelle zwei Texte (jeder mit einer anderen Schriftart) und ein Bild ein? und die Ränder setzen?

1) Wie in NatTable Zelle zwei Text (jeweils mit einer anderen Schriftart) und ein Bild einfügen?

2) wie stellen Sie die Ränder als das Bild unten ein?

In den folgenden Fällen:

a) unter Verwendung von Java 1.6 (kein RichTexCellEditor, kein CSS).
b) Verwenden von Java 1.7 (mit RichTexCellEditor, keine CSS).
c) Verwenden von Java 1.8 (mit RichTexCellEditor, mit CSS).

Image example

Vielen Dank im Voraus.

Antwort

0
  1. Das Styling von NatTable basiert auf Stilen und Malern, wie in [1] erläutert. Weitere Informationen zur Konfiguration von NatTable und zum Einstieg in NatTable finden Sie in der Einführung [2]
  2. Um eine Kombination wie die gewünschte zu erstellen, muss eine Kombination aus ICellPainter registriert werden.
  3. Zur Polsterung (nicht Spielraum) zwischen dem Zellenrand und dem Inhalt, verwendet die PaddingDecorator
  4. Um ein Bild zusätzlich zu Text hinzufügen, ein CellPainterDecorator verwenden, die einen Maler für den Text als Basis hat und ein ImagePainter als decorator hinzuzufügen.
  5. Das Rendern von Text mit verschiedenen Schriftarten wird nur von der RichTextCellPainter der NatTable-Nebulaerweiterung unterstützt. Dieser benötigt Java 1.7.
  6. CSS-Styling in NatTable wird verwendet, um eine Styling-Konfiguration über CSS zu erstellen. Dafür gibt es keine zusätzliche Unterstützung. Die CSS-Unterstützung ist in der NatTable E4 Extension enthalten, die Java 1.8 benötigt. Die Erklärung ist in der 1.4 Neue & Noteworthy Seite [3]

Also die Antwort auf a): Wiedergabe von Text mit zwei unterschiedlichen Schriftarten nicht von NatTable Kern unterstützt, daher müssen Sie eine benutzerdefinierte implementieren ICellPainter das würde das unterstützen.

Die Antwort auf b) ist eine komplexe Maler zu schaffen und es wie folgt registrieren:

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); 

Wo das obige Beispiel bedeutet, dass es durch das sind ColumnLabelAccumulator und dem Maler angelegte Spalten Etiketten nur für konfiguriert werden soll die erste Spalte. Beachten Sie auch, dass für den Stil für diese konkrete Zelle das Attribut CellStyleAttributes.IMAGE festgelegt werden muss, das dann von ImagePainter gerendert wird. Wenn das Bild repariert werden soll, muss es als Konstruktorparameter festgelegt werden.

Natürlich muss der Inhalt das notwendige HTML-Markup zum Rendern verschiedener Schriftarten enthalten. Etwas wie:

<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> 

Die Antwort zu c) ist nicht so trivial. Zunächst kann die oben gezeigte komplexe Malerstruktur nicht mit CSS erreicht werden.Der Grund dafür ist, dass mehrere Paddings konfiguriert werden müssen, was vom NatTable CSS nicht unterstützt wird. Zweitens ist RichTextPainter der E4 Extension nicht bekannt. Daher muss es manuell in der CellPainterFactory registriert werden, z.

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

wo die Handhabung zusätzlicher Attribute irgendwie berücksichtigt werden muss.

Im CSS würde es dann aussehen irgendwie wie folgt aus:

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

Wie Text in einem RichTextCellPainter horizontal zum Zentrum und/oder vertikal ohne Padding? Danke im Voraus. – ADeveloper

+0

Legen Sie die entsprechenden Werte für die Ausrichtungsstileigenschaften fest. Sollte in der verlinkten Dokumentation angezeigt werden und in den Beispielen zu sehen sein. –

Verwandte Themen