JavaFX TableView background transparent machen

lam_tr

Top Contributor
Hallo zusammen,

wie kann ich die Tabelle eigentlich transparent mit css stylen?
Ich habe der Tabelle mit -fx-background-Color: transparent; gemacht, leider klappt es nicht.

Habt ihr da Ideen für mich?

Grüße
lam
 

domjos1994

Mitglied
Hallo,
was willst du denn genau an der Tabelle transparent haben?

Wenn du die Reihen transparent haben willst:
Code:
.table-row-cell {
    -fx-background-color: transparent;
}

Wenn du den Hintergrund transparent haben willst:
Code:
.table-view {
    -fx-base: transparent;
    -fx-background-color: transparent;
}

Ein Stück hilft auch die gute, alte CSS-Referenz: https://docs.oracle.com/javafx/2/api/javafx/scene/doc-files/cssref.html

LG Dominic
 

dzim

Top Contributor

MattElg

Mitglied
@dzim
@domjos1994
Hallo ich stehe vor einem ähnlichen Problem. Ich will die Tabelle transparent haben, insgesamt. Bei dem unteren Teil der Tabelle klappt dies, also bei den Reihen. Bei der Überschrift klappt es nicht. Die ist weiter grau. Versuche ich es mit
.table-view {
-fx-base: transparent;
-fx-background-color: transparent;
}
Habe ich eine schwarze Tabellenüberschrift. Diese soll aber auch transparent sein.
 

dzim

Top Contributor
Schau mal ab hier:
https://gist.github.com/maxd/63691840fc372f22f470#file-modena-css-L2358
Speziell der Style .table-view .column-header-background dürfte für dich interessant sein.
Ansonsten habe ich mal den Code einer Anwendung studiert und bin dann auf folgende Lösung gekommen, wie ich meine Tabelle Stylen konnte (nur also Idee, bitte nicht einfach übernehmen, ich habe Custom-Farbdefinitionnen drin)
HTML:
/*
 * Es gibt noch ein paar mehr, die aber nur disable und focus beschreiben
 */

/*
 * List-, Tree, (Tree)TableView
 */

.table-view,
.tree-table-view {
    -fx-background-color: transparent;
    /* Constants used throughout the tableview. */
    -fx-table-header-border-color: -fx-box-border;
    -fx-table-cell-border-color: derive(-fx-color,5%);
}
.table-view:focused,
.tree-table-view:focused {
    -fx-background-color: transparent;
}

/***** ROW CELLS **************************************************************/
/* Each row in the table is a table-row-cell. Inside a table-row-cell is any
   number of table-cell. */
.table-row-cell {
    -fx-background: -fx-control-inner-background;
    -fx-background-color: -fx-table-cell-border-color, -fx-background;
    -fx-background-insets: 0, 0 0 1 0;
    -fx-padding: 0;
    -fx-text-fill: -fx-text-background-color;
}
.table-row-cell:odd {
    -fx-background: -fx-control-inner-background-alt;
}
/***** INDIVIDUAL CELLS ********************************************************/
.table-cell {
    -fx-padding: 0.166667em; /* 2px, plus border adds 1px */
    -fx-background-color: null;
    -fx-border-color: transparent -fx-table-cell-border-color transparent transparent;
    -fx-cell-size: 2.0em; /* 24 */
    -fx-text-fill: -fx-text-background-color;
}
.table-view > .virtual-flow > .clipped-container > .sheet > .table-row-cell .table-cell:selected,
.tree-table-view > .virtual-flow > .clipped-container > .sheet > .tree-table-row-cell .tree-table-cell:selected {
    -fx-background-color: -fx-table-cell-border-color, -fx-background;
    -fx-background-insets: 0, 0 0 1 0;
}
/* When in constrained resize mode, the right-most visible cell should not have
   a right-border, as it is not possible to get this cleanly out of view without
   introducing horizontal scrollbars (see RT-14886). */
.table-view:constrained-resize > .virtual-flow > .clipped-container > .sheet > .table-row-cell > .table-cell:last-visible,
.tree-table-view:constrained-resize > .virtual-flow > .clipped-container > .sheet > .tree-table-row-cell > .tree-table-cell:last-visible {
    -fx-border-color: transparent;
}
/***** HEADER **********************************************************************/
/* The column-resize-line is shown when the user is attempting to resize a column. */
.table-view .column-resize-line,
.tree-table-view .column-resize-line {
    -fx-background: -fx-accent;
    -fx-background-color: -fx-background;
    -fx-padding: 0.0em 0.0416667em 0.0em 0.0416667em; /* 0 0.571429 0 0.571429 */
}
/* This is the area behind the column headers. An ideal place to specify background
   and border colors for the whole area (not individual column-header's). */
.table-view .column-header-background,
.tree-table-view > .column-header-background {
    -fx-background-color: -fx-inner-border, -fx-body-color;
    -fx-background-insets: 0, 1;
}
/* The column header row is made up of a number of column-header, one for each
   TableColumn, and a 'filler' area that extends from the right-most column
   to the edge of the tableview, or up to the 'column control' button. */
.table-view .column-header,
.tree-table-view .column-header,
.table-view .filler,
.tree-table-view .filler,
.table-view > .column-header-background > .show-hide-columns-button,
.tree-table-view > .column-header-background > .show-hide-columns-button,
.table-view:constrained-resize .filler,
.tree-table-view:constrained-resize .filler {
    -fx-background-color: -fx-box-border, -fx-inner-border, -fx-body-color;
    -fx-background-insets: 0, 0 1 1 0, 1 2 2 1;
    -fx-font-weight: bold;
    -fx-size: 2em;
    -fx-text-fill: -fx-selection-bar-text;
    -fx-padding: 0.166667em;
}
.table-view .column-header .context-menu,
.tree-table-view .column-header .context-menu,
.table-view > .column-header-background > .show-hide-columns-button .context-menu,
.tree-table-view > .column-header-background > .show-hide-columns-button .context-menu {
    -fx-font-weight: null;
}
.table-view .filler,
.tree-table-view .filler,
.table-view:constrained-resize .filler,
.tree-table-view:constrained-resize .filler {
    -fx-background-insets: 0, 0 0 1 0, 1 1 2 1;
}
.table-view > .column-header-background > .show-hide-columns-button,
.tree-table-view > .column-header-background > .show-hide-columns-button {
    -fx-background-insets: 0, 0 0 1 1, 1 1 2 2;
}
.table-view .column-header .sort-order-dots-container,
.tree-table-view .column-header .sort-order-dots-container{
    -fx-padding: 2 0 2 0;
}
.table-view .column-header .sort-order,
.tree-table-view .column-header .sort-order{
    -fx-font-size: 0.916667em; /* 11pt - 1 less than the default font */
}
.table-view .column-header .sort-order-dot,
.tree-table-view .column-header .sort-order-dot {
    -fx-background-color: -fx-mark-color;
    -fx-padding: 0.115em;
    -fx-background-radius: 0.115em;
}
.table-view .column-header .label,
.tree-table-view .column-header .label {
    -fx-alignment: center;
}

/* Plus Symbol */
.table-view .show-hide-column-image,
.tree-table-view .show-hide-column-image {
    -fx-background-color: -fx-mark-color;
    -fx-padding: 0.25em; /* 3px */
    -fx-shape: "M398.902,298.045c0.667,0,1.333,0,2,0c0,0.667,0,1.333,0,2c0.667,0,1.333,0,2,0c0,0.667,0,1.333,0,2c-0.667,0-1.333,0-2,0c0,0.666,0,1.332,0,1.999c-0.667,0-1.333,0-2,0c0-0.667,0-1.333,0-1.999c-0.666,0-1.333,0-1.999,0c0-0.667,0-1.334,0-2c0.666,0,1.333,0,1.999,0C398.902,299.378,398.902,298.711,398.902,298.045z";
}
/* When a column is being 'dragged' to be placed in a different position, there
   is a region that follows along the column header area to indicate where the
   column will be dropped. This region can be styled using the .column-drag-header
   name. */
.table-view .column-drag-header,
.tree-table-view .column-drag-header {
    -fx-background: -fx-accent;
    -fx-background-color: -fx-selection-bar;
    -fx-border-color: transparent;
    -fx-opacity: 0.6;
}
/* Semi-transparent overlay to indicate the column that is currently being moved */
.table-view .column-overlay,
.tree-table-view .column-overlay {
    -fx-background-color: darkgray;
    -fx-opacity: 0.3;
}
/* Header Sort Arrows */
.table-view /*> column-header-background > nested-column-header >*/ .arrow,
.tree-table-view /*> column-header-background > nested-column-header >*/ .arrow {
    -fx-background-color: -fx-mark-color;
    -fx-padding: 0.25em 0.3125em 0.25em 0.3125em; /* 3 3.75 3 3.75 */
    -fx-shape: "M 0 0 h 7 l -3.5 4 z";
}
/* This is shown when the table has no rows and/or no columns. */
.table-view .empty-table,
.tree-table-view .empty-table {
    -fx-background-color: transparent;
    -fx-font-size: 1.166667em; /* 14pt - 2 more than the default font */
}

/*
 * TableView style
 * above: Defaults
 * below: Customization
 */
.table-view,
.table-view .column-header-background,
.table-view .column-header,
.table-view .filler {
    -fx-background-color: transparent;
}

.table-view .column-header,
.table-view .filler {
    -fx-border-color: -brand-secondary;
    -fx-border-width: 0 0 1 0;
}

.table-view {
    -fx-border-color: -brand-secondary;
    -fx-border-width: 0px 0px 0px 0px;
}

.table-row-cell:empty .table-cell {
    -fx-border-width: 0px;
    -fx-background-color: transparent;
}

.table-row-cell,
.table-row-cell:odd {
    -fx-background-color: transparent;
}

.table-row-cell .text,
.table-row-cell:odd .text,
.table-row-cell:hover .text{
    -fx-fill: black;
}

.table-row-cell:selected,
.table-row-cell:odd:selected,
.table-row-cell:even:selected {
    -fx-background-color: -brand-secondary;
}

.table-row-cell:selected .text,
.table-row-cell:odd:selected .text,
.table-row-cell:even:selected .text {
    -fx-fill: white;
}

.table-row-cell:hover,
.table-row-cell:odd:hover,
.table-row-cell:even:hover {
    -fx-background-color: -brand-tertiary;
}
.table-row-cell:empty:hover {
    -fx-background-color: transparent;
}

.table-row-cell:hover .text,
.table-row-cell:odd:hover .text,
.table-row-cell:even:hover .text {
    -fx-fill: white;
}

.table-cell {
    -fx-padding: 0.166667em; /* 2px, plus border adds 1px */
    -fx-background-color: null;
    -fx-border-color: transparent -brand-secondary transparent transparent;
    -fx-border-width: 0px 1px 0px 0px;
    -fx-cell-size: 2.0em; /* 24 */
    -fx-text-fill: -fx-text-background-color;
}
.table-cell:selected {
    -fx-background-color: -fx-table-cell-border-color, -fx-background;
    -fx-background-insets: 0, 0 0 1 0;
}
.table-cell:last-visible {
    -fx-border-color: transparent;
}

Speziell der untere Teil dürfte interessant sein...
 

MattElg

Mitglied
Das Problem lag an anderer Stelle. Es gibt in Java für CSS kein "transparent" als Farbe. Egal was man probiert, es gibt einen scharzen Hintergrund oder eine Fehlermeldung(ClassCastException) bzw. Warnung. Eine CSS half mir nicht weiter, da ich als Usereinstellung auch die Farbauswahl habe. Letztlich habe ich es folgend gelöst.
TableView tableX = new TableView();
TableColumn Col = new TableColumn("Kierunek");
TableColumn Col2 = new TableColumn();
String textTableColumn = "Hallo";
Col2.setText(textTableColumn);
tableX.getColumns().addAll(Col, Col2);
tableX.setStyle("-fx-background-color: transparent; "
+ "-fx-base: rgba(56, 176, 209, 0); ");
Und Java schluckt es ohne Fehlermeldung.
Und ich habe eine Tabelle, wo nur die Schrift zu sehen ist, die zudem durchsichtig ist, also genau was ich wollte.
Man kann dies noch mit:
+ "-fx-background-insets: " + shadowSize + "; "
ergänzen um die bei anderen Farbeinstellungen auch die Durchsichtigkeit zu haben.
 

dzim

Top Contributor
@lam_tr das ist falsch: Es gibt sehr wohl transparent im CSS! Und es funktioniert auch korrekt, wenn man es richtig einsetzt, bzw. die Node-Hierarchy korrekt anpasst. Auch kannst du im CSS die Funktion rgb(r, g, b, alpha) verwenden, um einer Farbe einen Transparenz-Effekt zu verleihen (eben den Alpha-Kanal anpassen). Auch sind statt der üblichen 3er-Hex-Blöcke, solche mit einem vierten Block möglich (wieder Alpha-Kanal).
Am wahrscheinlichsten ist, dass du irgendwo noch einen Node im Scene Graph hattest, der dir die Transparenz "kaputt" gemacht hat (passiert schnell mal). Ich würde dir empfehlen, mal das Tool Scenic View zu verwenden, und deinen Scene Graphen zu inspizieren.

Btw: Wenn etwas mit dem CSS nicht stimmt, wird es auf der Konsole ausgegeben. Davon abgesehen ist die Verwendung von setStyle mit Vorsicht zu geniessen: Speziell bei verschachtelten UIs (ja, TableViews gehören zu den etwas komplizierteren und verschachtelten) passiert es schnell, dass der Stil quasi auf dem falschen Node angewendet wird - IMHO ist setStyle dort mitunter zwar verlockend, aber auch schnell irreführend.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Juelin setzen background color für selected Row im Tableview AWT, Swing, JavaFX & SWT 21
M JavaFX TableView nur erste Zeile editable machen und gelb markieren AWT, Swing, JavaFX & SWT 0
Encera TableView Zeilen als Spalten im SceneBuilder AWT, Swing, JavaFX & SWT 0
T TableView Button onAction AWT, Swing, JavaFX & SWT 3
mrbody234 ArrayList<Message> in eine TableView visualisieren AWT, Swing, JavaFX & SWT 2
izoards JavaFX TableView mit Array Inhalt füllen AWT, Swing, JavaFX & SWT 1
A Mit JavaFX einzelne Zeilen in TableView farbig markieren AWT, Swing, JavaFX & SWT 5
I JavaFX Zellen in Tableview editieren AWT, Swing, JavaFX & SWT 0
A TableView updatet sich nicht AWT, Swing, JavaFX & SWT 3
missy72 JavaFX TableView Spalte zwischen den Zeilen AWT, Swing, JavaFX & SWT 5
W TableView füllen AWT, Swing, JavaFX & SWT 18
missy72 JavaFX TableView / IconView mit MousEvent AWT, Swing, JavaFX & SWT 7
missy72 JavaFX Performance / ImageView in TableView über TimeLine AWT, Swing, JavaFX & SWT 1
T TableView aktualisieren AWT, Swing, JavaFX & SWT 1
N JavaFX Tableview nach Löschen von Element falscher Index AWT, Swing, JavaFX & SWT 4
T TableView Zeilen einfärben AWT, Swing, JavaFX & SWT 13
T TableView über Methode befüllen AWT, Swing, JavaFX & SWT 10
missy72 JavaFX TableView / TableColumn / ObservableList / zwei Werte in einer Zelle AWT, Swing, JavaFX & SWT 2
W JavaFX TableView aktualisieren AWT, Swing, JavaFX & SWT 1
S JavaFX - mit Listener Veränderungen in einer TableView abhören AWT, Swing, JavaFX & SWT 3
B JavaFX TableView-Zellen sollen automatisch so groß wie der größte Inhalt sein AWT, Swing, JavaFX & SWT 6
D JavaFX Nullpointerexception wegen TableView AWT, Swing, JavaFX & SWT 2
S Alternative JavaFX TableView AWT, Swing, JavaFX & SWT 1
L JavaFX Tableview row callback AWT, Swing, JavaFX & SWT 0
G Bekomme ResultSet mittels ObservableList nicht ins TableView AWT, Swing, JavaFX & SWT 25
S JavaFX JavaFX TableView scrollen färbt falsche Zeilen AWT, Swing, JavaFX & SWT 1
A checkbox in einer TableView abhängig von einem anderen Celleninhalt disablen AWT, Swing, JavaFX & SWT 1
J JavaFx TableView mit CheckBox AWT, Swing, JavaFX & SWT 4
P JavaFX TableView Zelle markieren AWT, Swing, JavaFX & SWT 3
L JavaFX Tableview Datamodel AWT, Swing, JavaFX & SWT 2
M TableView Zeile hinzufügen AWT, Swing, JavaFX & SWT 5
Bluedaishi TableView mit Combox wert wird nicht in die TableView gesetzt AWT, Swing, JavaFX & SWT 38
J TableView Update/Refresh CPU AWT, Swing, JavaFX & SWT 2
B Text im Tetfeld in einer TableView darstellen AWT, Swing, JavaFX & SWT 20
J Tableview - kann man mit Enter die Zellen wechseln AWT, Swing, JavaFX & SWT 1
ralfb1105 JavaFX Dynamisch TableView Spalten erstellen AWT, Swing, JavaFX & SWT 4
M TableView + Datenbank Aktualisierung AWT, Swing, JavaFX & SWT 4
B TableView als PDF speichern AWT, Swing, JavaFX & SWT 8
B JavaFX TableView eine Zeile markieren AWT, Swing, JavaFX & SWT 5
B JavaFX JavaFX TableView PropertyValueFactory für Werte aus HashMap AWT, Swing, JavaFX & SWT 2
L JavaFX TableView Column Sortierung AWT, Swing, JavaFX & SWT 1
L Java FX Keine Anzeige Im Tableview AWT, Swing, JavaFX & SWT 4
L JavaFX TableView kein content text ändern AWT, Swing, JavaFX & SWT 2
L JavaFX TableView mit Aktionenbuttons AWT, Swing, JavaFX & SWT 1
C JavaFX Edit TableView in Verbindung mit SceneBuilder AWT, Swing, JavaFX & SWT 1
C JavaFX ProGuard -> TableView kein Inhalt AWT, Swing, JavaFX & SWT 7
J SceneBuilder TableView Checkbox AWT, Swing, JavaFX & SWT 1
J JavaFX Elemente werden nicht zu TableView hinzugefügt AWT, Swing, JavaFX & SWT 3
F JavaFX (Tree)TableView korrekt drucken AWT, Swing, JavaFX & SWT 1
robinab JavaFX TableView column resize nach setItems() AWT, Swing, JavaFX & SWT 0
G JavaFX TableView Wert in Spalte ändern AWT, Swing, JavaFX & SWT 0
S JavaFx - ausgewählte Rows in Arraylist (Tableview) AWT, Swing, JavaFX & SWT 4
S JavaFX - Populate TableView AWT, Swing, JavaFX & SWT 2
N JavaFX TableView aus Map AWT, Swing, JavaFX & SWT 2
J TableView Daten werden nicht ausgegeben AWT, Swing, JavaFX & SWT 9
B JavaFX TableView aus Collection befüllen AWT, Swing, JavaFX & SWT 1
S JavaFX TableView einzelne Zelle Layout zuweisen AWT, Swing, JavaFX & SWT 3
zhermann TableView die zweite AWT, Swing, JavaFX & SWT 7
H Java FX List<AlbumsBean> in FXML TableView AWT, Swing, JavaFX & SWT 37
E JavaFX TableView mit Zeilenumbruch in Zellen AWT, Swing, JavaFX & SWT 5
zhermann TableView wird nicht gefüllt AWT, Swing, JavaFX & SWT 14
M JavaFX JavaFX ResultSet in TableView ausgeben AWT, Swing, JavaFX & SWT 2
W JavaFX Mehrere Klassen in ein TableView AWT, Swing, JavaFX & SWT 6
MaxG. JavaFX Inhalt in Tableview wird nicht angezeigt AWT, Swing, JavaFX & SWT 11
M JavaFX berechneten Wert in TableView schreiben AWT, Swing, JavaFX & SWT 1
K JavaFX Message in TableView AWT, Swing, JavaFX & SWT 2
H TableView mit variabler Anzahl Spalten AWT, Swing, JavaFX & SWT 2
L JavaFX List oder TableView Größe dynamisch anpassen? AWT, Swing, JavaFX & SWT 4
L JavaFX TableView mit Excelfunktion AWT, Swing, JavaFX & SWT 1
D JavaFX TableView AWT, Swing, JavaFX & SWT 2
L JavaFX TableView mit XYChart verbinden AWT, Swing, JavaFX & SWT 3
blazingblade JavaFX Tableview Clock Column update AWT, Swing, JavaFX & SWT 5
P JavaFX, TableView und Datenbank AWT, Swing, JavaFX & SWT 4
K TableView: 'Komplexes' Object AWT, Swing, JavaFX & SWT 11
F TableCell aus TableView holen AWT, Swing, JavaFX & SWT 8
K JavaFX TableView mit Rectangle AWT, Swing, JavaFX & SWT 3
M Befüllung der einzelnen Zeilen des TableView AWT, Swing, JavaFX & SWT 3
J JavaFX Tableview Daten hinzufügen aus anderer Klasse AWT, Swing, JavaFX & SWT 7
J Tableview Daten hinzufügen und aktualisieren AWT, Swing, JavaFX & SWT 5
N JavaFX TableView füllt nicht das gesamte ScrollPanle aus AWT, Swing, JavaFX & SWT 2
M JavaFX TableView & CSS, Rand um Tabellenkopf entfernen AWT, Swing, JavaFX & SWT 3
L JavaFX ListView oder TableView Style überschreiben? AWT, Swing, JavaFX & SWT 6
G Event Handling TableView daten in ein neues Fenster herauslesen? AWT, Swing, JavaFX & SWT 3
thet1983 JavaFX TableView Objekt Daten anzeige AWT, Swing, JavaFX & SWT 2
J JavaFX TableView - Höhe der Zeilen AWT, Swing, JavaFX & SWT 3
L JavaFX TableView mit Attributs der Modellreferenzerierung für die Spalte AWT, Swing, JavaFX & SWT 3
I JavaFX Buttons und TableView AWT, Swing, JavaFX & SWT 2
J JavaFX Bestimmte Zellen im TableView ändern (Farbe und Text) AWT, Swing, JavaFX & SWT 1
B Java FX TableView Zeilen mit verschiedenen Typen AWT, Swing, JavaFX & SWT 15
Z JavaFX TableView cellValueFactory für Arrays AWT, Swing, JavaFX & SWT 2
E JavaFX TableView mit Rechtsklick Zelle auswählen AWT, Swing, JavaFX & SWT 8
C (JavaFX 8) SQLite Datenbank in einem TableView darstellen AWT, Swing, JavaFX & SWT 2
D JavaFX TableView bleibt leer. AWT, Swing, JavaFX & SWT 8
M JavaFX TableView nach Spalte sortieren AWT, Swing, JavaFX & SWT 1
P JavaFX Dynamische TableView AWT, Swing, JavaFX & SWT 14
V Java FX POJO aus Datenbank in FX TableView / Best Practice AWT, Swing, JavaFX & SWT 0
P JavaFX TableView Item hinzufügen AWT, Swing, JavaFX & SWT 20
W JavaFX TableView frage AWT, Swing, JavaFX & SWT 5
M JavaFX Tutorial zu Tableview AWT, Swing, JavaFX & SWT 5
C JavaFX Zugriff auf TableView AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben