Hallo,
ich habe absolute Verständnisprobleme mit der RowFactory und wahrscheinlich mit artverwandten Themen. Ich habe dazu einiges aus dem Netz versucht zu verstehen, oder zumindest in meinem Programm umzusetzen. Beides ohne Erfolg.
Ich habe zwei Tabellen (tableView) mit mehreren Spalten (table. Column). Jetzt klicke ich auf eine beliebige Zelle in einer Zeile der Ausgangstabelle und kopiere die Werte in meine Empfängertabelle. Über die CSS-Datei steuere ich noch über den Befehl .table-row-cell:hover ein, sodass die Zeile über der sich der Mauszeiger befindet einfärbt wird . So weit so gut.
Jetzt möchte ich die ausgewählte Zeile einfärben, damit der User die kopierten Zeilen überschauen kann. Den Index der Zeile habe ich auch noch ausgelesen.
Lambdas sind mir zwar bekannt, habe dafür aber auch noch kein Verständnis.
Als erstes würde mir der Programmcode für das Einfärben der Zeile aus der TableView (dbFahrerListeTV) ausreichen.
Wenn dann noch eine, hoffentlich auch mir, verständliche Erklärung niedergeschrieben wird, wäre ich sehr dankbar.
Schöne Grüße MB.
[CODE lang="java" title="TableRow / tableFactory"]// Auswahl Teilnehmer und Ansicht Liste Fahrerauswahl
dbFahrerListeTV.setOnMousePressed(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
boolean doppelt = false;
if (event.isPrimaryButtonDown() && event.getClickCount() == 1) {
Fahrer choosedFahrer = dbFahrerListeTV.getSelectionModel().getSelectedItem();
int index = dbFahrerListeTV.getSelectionModel().getSelectedIndex();
// Tabellenzeile einfärben
dbFahrerListeTV.setRowFactory( row -> new TableRow<Fahrer>(){
@Override
public void updateItem(Fahrer item, boolean empty) {
super.updateItem(item, empty);
setStyle("-fx-background-color: yellow;");
}
});
for (Fahrer tempListeFahrer : listeStarterFahrer) {
if (tempListeFahrer == choosedFahrer) {
doppelt = true;
}
}
if (doppelt == false) {
listeStarterFahrer.add(choosedFahrer);
printListeFahrer = listeStarterFahrer;
Collections.reverse(printListeFahrer); // neue Auswahl an Pos1 anzeigen
starterListeTV.setItems(printListeFahrer);
counterMod(true);
}
}
}
});[/CODE]
ich habe absolute Verständnisprobleme mit der RowFactory und wahrscheinlich mit artverwandten Themen. Ich habe dazu einiges aus dem Netz versucht zu verstehen, oder zumindest in meinem Programm umzusetzen. Beides ohne Erfolg.
Ich habe zwei Tabellen (tableView) mit mehreren Spalten (table. Column). Jetzt klicke ich auf eine beliebige Zelle in einer Zeile der Ausgangstabelle und kopiere die Werte in meine Empfängertabelle. Über die CSS-Datei steuere ich noch über den Befehl .table-row-cell:hover ein, sodass die Zeile über der sich der Mauszeiger befindet einfärbt wird . So weit so gut.
Jetzt möchte ich die ausgewählte Zeile einfärben, damit der User die kopierten Zeilen überschauen kann. Den Index der Zeile habe ich auch noch ausgelesen.
Lambdas sind mir zwar bekannt, habe dafür aber auch noch kein Verständnis.
Als erstes würde mir der Programmcode für das Einfärben der Zeile aus der TableView (dbFahrerListeTV) ausreichen.
Wenn dann noch eine, hoffentlich auch mir, verständliche Erklärung niedergeschrieben wird, wäre ich sehr dankbar.
Schöne Grüße MB.
[CODE lang="java" title="TableRow / tableFactory"]// Auswahl Teilnehmer und Ansicht Liste Fahrerauswahl
dbFahrerListeTV.setOnMousePressed(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
boolean doppelt = false;
if (event.isPrimaryButtonDown() && event.getClickCount() == 1) {
Fahrer choosedFahrer = dbFahrerListeTV.getSelectionModel().getSelectedItem();
int index = dbFahrerListeTV.getSelectionModel().getSelectedIndex();
// Tabellenzeile einfärben
dbFahrerListeTV.setRowFactory( row -> new TableRow<Fahrer>(){
@Override
public void updateItem(Fahrer item, boolean empty) {
super.updateItem(item, empty);
setStyle("-fx-background-color: yellow;");
}
});
for (Fahrer tempListeFahrer : listeStarterFahrer) {
if (tempListeFahrer == choosedFahrer) {
doppelt = true;
}
}
if (doppelt == false) {
listeStarterFahrer.add(choosedFahrer);
printListeFahrer = listeStarterFahrer;
Collections.reverse(printListeFahrer); // neue Auswahl an Pos1 anzeigen
starterListeTV.setItems(printListeFahrer);
counterMod(true);
}
}
}
});[/CODE]
Zuletzt bearbeitet: