JavaFX Custom ListView erstellt ghost Element

ffghts

Mitglied
Hallo,

ich habe mir ein custom ListView erstellt, um Gruppen in meinem Programm anzuzeigen.
Es funktioniert auch ganz gut, nur wird immer ein weiteres Zellen Element erstellt, dass zwar nicht den Namen, die Beschreibung, oder das Bild hat, aber beim drauf klicken das selbe macht. :confused:

Hier ist meine ListCell Klasse.
Java:
public class GroupListCell extends ListCell<Group> {

    @FXML
    private Label lblName;

    @FXML
    private Label lblGameName;

    @FXML
    private GridPane gridPane;

    private FXMLLoader mLoader;


    @Override
    protected void updateItem(Group item, boolean empty) {
        super.updateItem(item, empty);

        if (empty || item == null) {

            setText(null);
            setGraphic(null);

        } else {

            if (mLoader == null) {
                mLoader = new FXMLLoader(getClass().getResource("/FXML/ListCell.fxml"));
                mLoader.setController(this);

                try {
                    mLoader.load();

                } catch (Exception ex) {
                    ex.printStackTrace();
                }
            }
            try {

                lblName.setText(item.getName());
                lblGameName.setText(item.getGameName());

                if (item.getGames().equals(Group.GAMES.OTHER)) {
                    gridPane.setStyle(  "-fx-background-image: url('BildURL');" +
                                        "-fx-background-size: stretch;");
                }
            }   catch(Exception ex){
                ex.printStackTrace();
            }

            setText(null);
            setGraphic(gridPane);
        }
    }
}



Auf dem Bild sind zwei Zellen zu sehen, die obere, mit einem Bild und die darunter ohne irgendwas. Aber die soll eigentlich gar nicht da sein. Oder ist es normal, dass sich ein ListView mit leeren Zellen auffüllt?

Grüße
 

dzim

Top Contributor
Hm... Ich muss es mal versuchen nachzuvollziehen, aber ich glaube, dass liegt mitunter am CSS. Und es sieht ja so aus, als ob du da auch schon heftig eingegriffen hättest.

Zusätzlich würde ich der Zelle noch anweisen, den Text komplett zu ignorieren/nicht zu rendern: #setContentDisplay(ContentDisplay#GRAPHIC_ONLY)
Das wird aber keinen Einfluss darauf haben.

Mein CSS sieht folgendermassen (hässlich) aus:
CSS:
/*
* ListView and other components
*/

.scroll-pane,
.split-pane,
.list-view,
.tree-view,
.table-view,
.tree-table-view,
.html-editor {
    -fx-background-color: -neutral-white;
    -fx-background-insets: 0, 1;
    -fx-padding: 1;
}
.scroll-pane:focused,
.split-pane:focused,
.list-view:focused,
.tree-view:focused,
.table-view:focused,
.tree-table-view:focused,
.html-editor:contains-focus {
    -fx-background-color: -neutral-white;
    /*-fx-background-insets: -1.4, -0.3, 1;
    -fx-background-radius: 2, 0, 0;*/
}
/* ones with grey -fx-background not lighter -fx-control-inner-background */
.scroll-pane,
.split-pane {
    -fx-background-color: -neutral-white;
}
.scroll-pane:focused,
.split-pane:focused {
    -fx-background-color: -neutral-white;
}
/* standard cell */
.list-cell,
.tree-cell {
    -fx-background: -fx-control-inner-background;
    -fx-background-color: -neutral-white;
    -fx-text-fill: -fx-text-background-color;
}
/* Selected rows */
.list-view:focused > .virtual-flow > .clipped-container > .sheet > .list-cell:filled:selected,
.tree-view:focused > .virtual-flow > .clipped-container > .sheet > .tree-cell:filled:selected,
.table-view:focused > .virtual-flow > .clipped-container > .sheet > .table-row-cell:filled:selected,
.tree-table-view:focused > .virtual-flow > .clipped-container > .sheet > .tree-table-row-cell:filled:selected,
.table-view:focused > .virtual-flow > .clipped-container > .sheet > .table-row-cell .table-cell:selected,
.tree-table-view:focused > .virtual-flow > .clipped-container > .sheet > .tree-table-row-cell .tree-table-cell:selected {
    -fx-background: -brand-secondary; /*-fx-selection-bar;*/
    -fx-table-cell-border-color: derive(-fx-selection-bar, 20%);
}
/* Selected when control is not focused */
.list-cell:filled:selected,
.tree-cell:filled:selected,
.table-row-cell:filled:selected,
.tree-table-row-cell:filled:selected,
.table-row-cell:filled > .table-cell:selected,
.tree-table-row-cell:filled > .tree-table-cell:selected {
    -fx-background: -brand-secondary; /*-fx-selection-bar-non-focused;*/
    -fx-background-color: -brand-secondary;
    -fx-table-cell-border-color: derive(-brand-secondary, 20%);/*derive(-fx-selection-bar-non-focused, 20%);*/
}
/* focused cell (keyboard navigation) */
.list-view:focused > .virtual-flow > .clipped-container > .sheet > .list-cell:focused,
.tree-view:focused > .virtual-flow > .clipped-container > .sheet > .tree-cell:focused,
.table-view:focused:row-selection > .virtual-flow > .clipped-container > .sheet > .table-row-cell:focused,
.tree-table-view:focused:row-selection > .virtual-flow > .clipped-container > .sheet > .tree-table-row-cell:focused,
.table-view:focused:cell-selection > .virtual-flow > .clipped-container > .sheet > .table-row-cell > .table-cell:focused,
.tree-table-view:focused:cell-selection > .virtual-flow > .clipped-container > .sheet > .tree-table-row-cell > .tree-table-cell:focused {
    -fx-background-color: -brand-secondary; /*-fx-background, -fx-cell-focus-inner-border, -fx-background;*/
    /*-fx-background-insets: 0, 1, 2;*/
}

.list-view.bordered {
    -fx-border-color: -neutral-light-gray-1;
}

/* ListView and ListCell */
.list-cell {
    /*-fx-padding: 0.25em 0.583em 0.25em 0.583em;*/ /* 3 7 3 7 */
}
.list-cell:odd {
    /*-fx-background: -fx-control-inner-background-alt;*/
    -fx-background: -neutral-white;
}

.list-cell:selected {
    -fx-background-color: -brand-secondary;
}

/* other overrides of a separate CSS in a sub-project */

.list-view,
.list-view:focused {
    -fx-background-insets: 0;
    -fx-padding: 0;
    -fx-background-color: -neutral-light-gray-1;
}
.list-view .virtual-flow,
.list-view .clipped-container,
.list-view .sheet,
.list-view Group {
    -fx-background-color: transparent;
}
.list-view .list-cell.hover-pane:hover {
    -fx-background-color: -brand-tertiary;
}
.list-view .list-cell.background {
    -fx-background-color: transparent;
}
.list-view:focused > .virtual-flow > .clipped-container > .sheet > .list-cell:filled:selected,
.list-view:focused > .virtual-flow > .clipped-container > .sheet > .list-cell:focused {
    -fx-background-color: -neutral-light-gray-1;
}

.list-view .corner {
    -fx-background-color: transparent;
}

/* list-cell override */
.list-cell,
.list-cell:odd,
.list-cell:selected,
.list-cell:filled:selected {
    -fx-background-color: -neutral-light-gray-1;
}
 

ffghts

Mitglied
Hey,

erstmal vielen dank für deine Antwort.

An CSS habe ich gar nicht gedacht. :rolleyes:
Manchmal sieht man den Wald vor lauter Bäumen einfach nicht.
Ich habe jetzt einfach die leeren Zellen der Hintergrundfarbe angepasst.

CSS:
.list-view .list-cell:empty {
    -fx-background-color: #333333;
}

Ich danke dir auf jeden Fall für deinen Denkanstoß.
Und ich muss sagen, gegen mein CSS, sieht deins noch echt gut aus. :D

Grüße
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Splayfer Custom Font in AttributedString Java AWT, Swing, JavaFX & SWT 4
M4cM4rco0707 JavaFX Custom-Komponente mit Custom-Controller AWT, Swing, JavaFX & SWT 3
S JavaFX Java Custom Node Grafik zurückgeben AWT, Swing, JavaFX & SWT 2
F JavaFX Custom Exceptions AWT, Swing, JavaFX & SWT 5
Yjuq JavaFX Custom Control - Image resize AWT, Swing, JavaFX & SWT 0
D Gluon Scene Builder Custom AWT, Swing, JavaFX & SWT 0
B JavaFX Custom TextInputControl AWT, Swing, JavaFX & SWT 1
T Custom Window ohne Swing / AWT / FX..?! AWT, Swing, JavaFX & SWT 1
X Custom Controls AWT, Swing, JavaFX & SWT 5
T JavaFX Custom Layout AWT, Swing, JavaFX & SWT 5
L JavaFX Custom control mit Hover Effekt AWT, Swing, JavaFX & SWT 2
M Swing JColorchooser anpassen - custom style? AWT, Swing, JavaFX & SWT 0
M JavaFX Parameter für Custom Control in FXML übergeben? AWT, Swing, JavaFX & SWT 4
B Custom JTabbedPane-Tab-Design AWT, Swing, JavaFX & SWT 2
N JLabel HTML mit custom Font AWT, Swing, JavaFX & SWT 0
P Verbuggte custom JButton unter Windows AWT, Swing, JavaFX & SWT 9
G TitledPane Custom Title AWT, Swing, JavaFX & SWT 6
N Custom JButton Feld aus Parent lesen lassen AWT, Swing, JavaFX & SWT 11
V Swing Custom JToggleButton in JTable - Click-Event geht erst beim zweiten Mal AWT, Swing, JavaFX & SWT 7
lumo SWT JFace Databinding +Custom Table AWT, Swing, JavaFX & SWT 2
B Swing JTable custom ColumnModel Problem AWT, Swing, JavaFX & SWT 5
W Swing Tag Oder Custom Eintrag AWT, Swing, JavaFX & SWT 7
algorismi Custom JDesktopIcon AWT, Swing, JavaFX & SWT 5
hdi Custom Cursor: Problem mit Größe AWT, Swing, JavaFX & SWT 5
N JComboBox mit Custom Object AWT, Swing, JavaFX & SWT 2
V Frage zu JScrollPane mit Custom Headern, mit Beispiel AWT, Swing, JavaFX & SWT 2
S [S] custom tree componente AWT, Swing, JavaFX & SWT 8
Z MessageDialog mit Custom panel erstellen AWT, Swing, JavaFX & SWT 2
H JavaFX ListView MultipleSelection AWT, Swing, JavaFX & SWT 9
AmsananKING ListView Drag And Drop AWT, Swing, JavaFX & SWT 0
AmsananKING Drag And Drop Filenames Inside A Listview AWT, Swing, JavaFX & SWT 1
D Layout einer scene mit ListView Elementen und Zwei Textfeldern AWT, Swing, JavaFX & SWT 1
TheWhiteShadow JavaFX ListView Problem beim Entfernen von Elementen AWT, Swing, JavaFX & SWT 1
Davee JavaFX ListView = null wenn ich sie in Laufzeit ändern will! AWT, Swing, JavaFX & SWT 16
G Eintrag soll nur einmal in Listview zu sehen sein AWT, Swing, JavaFX & SWT 3
T ListView nach Erweiterung Fehler in CellFactory AWT, Swing, JavaFX & SWT 8
T ListView in TableCell AWT, Swing, JavaFX & SWT 4
MiMa File Dateien im ListView als Name anzeigen? AWT, Swing, JavaFX & SWT 6
B JavaFX ListView in Kombination mit TextField AWT, Swing, JavaFX & SWT 5
B JavaFX das richtige ListView filtern AWT, Swing, JavaFX & SWT 2
B Dynamische ListView-Größe, die bei Fenstergrößenänderung sich anpasst AWT, Swing, JavaFX & SWT 19
S JavaFX ListView Inhalte während Laufzeit ändern AWT, Swing, JavaFX & SWT 23
karlmasutra JavaFX ListView zeigt Einträge nicht an AWT, Swing, JavaFX & SWT 11
B Textfelder in einer ListView ausgeben AWT, Swing, JavaFX & SWT 13
J CheckBoxListCell auf click event in listView reagieren AWT, Swing, JavaFX & SWT 1
karlmasutra JavaFX Listenelemente bearbeiten Listview AWT, Swing, JavaFX & SWT 1
D JavaFX Listview mit observableList AWT, Swing, JavaFX & SWT 6
MiMa Selektion aus einer ListView AWT, Swing, JavaFX & SWT 5
N Frage zu ListView AWT, Swing, JavaFX & SWT 11
L JavaFX ListView Größe anpassen AWT, Swing, JavaFX & SWT 1
F JavaFX ListView füllen in Controller Class AWT, Swing, JavaFX & SWT 12
F JavaFX In SampleController ObservableList zu ListView hinzufügen AWT, Swing, JavaFX & SWT 0
D JavaFX ListView & TabelView AWT, Swing, JavaFX & SWT 9
F JavaFX Von Datenbank in ListView AWT, Swing, JavaFX & SWT 4
F JavaFX ListView Zeilenhöhe AWT, Swing, JavaFX & SWT 2
M Auswahl aus einer ListView AWT, Swing, JavaFX & SWT 3
F Icons neben Text in Listview setzen AWT, Swing, JavaFX & SWT 2
K ListView right click AWT, Swing, JavaFX & SWT 1
Y Listview Textfield vergrößern, Schrift anpassen AWT, Swing, JavaFX & SWT 0
C Liste - ListView wird nicht angezeigt AWT, Swing, JavaFX & SWT 15
L JavaFX ListView oder TableView Style überschreiben? AWT, Swing, JavaFX & SWT 6
thobren listview seclect abschalten AWT, Swing, JavaFX & SWT 1
NoXiD Java FX JFX 2 DnD ListView AWT, Swing, JavaFX & SWT 3
T [JavaFX 2.0] ListView editieren AWT, Swing, JavaFX & SWT 2
berserkerdq2 Wie greife ich auf ein Element zu, welches ich beim Scenebuilder erstellt habe AWT, Swing, JavaFX & SWT 10
Lunar Swing JFrame erstellt; weitere Elemente werden nicht eingefügt/sind nicht zu sehen AWT, Swing, JavaFX & SWT 4
B JavaFX Von welcher Klasse und zu welchem Zeitpunkt werden Event-Objekte erstellt? AWT, Swing, JavaFX & SWT 3
L JFrame wird zu klein erstellt AWT, Swing, JavaFX & SWT 7
ralfb1105 jTextArea Scrollbar hinzufügen - mit Jigloo erstellt AWT, Swing, JavaFX & SWT 7
L Swing JComboBox kann nicht erstellt werden! AWT, Swing, JavaFX & SWT 2
D [Anfänger]ComboBox erstellt Einträge in einer anderen ComboBox AWT, Swing, JavaFX & SWT 3
wolfgang63 JavaFX Zugriff auf Guiobjekte die über FXML erstellt wurden AWT, Swing, JavaFX & SWT 2
V JFrame wird dank "dauerschleife" nicht erstellt AWT, Swing, JavaFX & SWT 3
G Label wird nicht erstellt AWT, Swing, JavaFX & SWT 0
L Buttons aus Arrayliste erstellt wie komm ich nun wieder an das Oobjekt aus der arrayliste ran AWT, Swing, JavaFX & SWT 3
M Im Frame wird nur die Menüleiste erstellt und nicht die Tabelle? AWT, Swing, JavaFX & SWT 3
X Checkboxen erstellt mit MouseClicked event AWT, Swing, JavaFX & SWT 10
data89 Wie erstellt man ein anspruchsvolles GUI? AWT, Swing, JavaFX & SWT 18
L Dynamische Buttons erstellt, aber wie ein Event zuweisen? AWT, Swing, JavaFX & SWT 11
O Graphics erstellt Componente scheinbar nicht richtig AWT, Swing, JavaFX & SWT 23
B Label wird ungewollt mehrmals erstellt AWT, Swing, JavaFX & SWT 4
B Wie erstellt man so eine Gui? AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Neue Themen


Oben