- 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]
- Um eine Kombination wie die gewünschte zu erstellen, muss eine Kombination aus
ICellPainter
registriert werden.
- Zur Polsterung (nicht Spielraum) zwischen dem Zellenrand und dem Inhalt, verwendet die
PaddingDecorator
- 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.
- Das Rendern von Text mit verschiedenen Schriftarten wird nur von der
RichTextCellPainter
der NatTable-Nebulaerweiterung unterstützt. Dieser benötigt Java 1.7.
- 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
Wie Text in einem RichTextCellPainter horizontal zum Zentrum und/oder vertikal ohne Padding? Danke im Voraus. – ADeveloper
Legen Sie die entsprechenden Werte für die Ausrichtungsstileigenschaften fest. Sollte in der verlinkten Dokumentation angezeigt werden und in den Beispielen zu sehen sein. –