Es tut mir leid für Fehler Ich bin Französisch. Also ich habe ein TableView leer. Ich habe eine Schaltfläche "Hinzufügen", wenn Sie auf eine Zeile in einer Tabellenansicht klicken. Und wenn ich in meiner Tabellenansicht eine Zeile auswähle, erscheint eine neue Schaltfläche "Abbrechen". Und wenn ich auf die Schaltfläche "Abbrechen" klicke, ändert sich die CSS-Zeile der Zeile in meiner ausgewählten Zeile (fügte eine Klasse css ".cancel" hinzu).Ändern css für eine neue Zeile in TableView hinzugefügt Javefx
Das Problem ist, dass ich auf den Button "Abbrechen" klicke, und nachdem ich in den Button "Hinzufügen" geklickt habe, wird der CSS ".cancel" in einer anderen Zeile angewendet, während ich nicht geklickt habe ".
Ich denke, dass es ein Problem in der Indexreihe gibt.
In meiner Methode initialisieren:
articleTable.setRowFactory(param -> new TableRow<LigneTicket>() {
@Override
protected void updateItem(LigneTicket paramT, boolean empty) {
super.updateItem(paramT, empty);
if (!isEmpty() && paramT != null && paramT.getArticle().isArticleCanceled()) {
getStyleClass().add("cancel");
}
}
});
meinen Code auf die Schaltfläche "Abbrechen":
public void cancelLigneTicket() {
int indexSelected = articleTable.getSelectionModel().getSelectedIndex();
articleTable.getItems().get(indexSelected).getArticle().setArticleAnnuler(true);
articleTable.getSelectionModel().clearSelection();
List<LigneTicket> items = new ArrayList<>(articleTable.getItems());
articleTable.getItems().setAll(items);
buttonAnnulArt.setVisible(false);
Hilfe !!
Danke.
Haben Sie jemals die Stilklasse 'cancel' entfernt? Auch - Sie sind wahrscheinlich besser dran mit Pseudo-Klasse, siehe http://stackoverflow.com/questions/37072514/how-to-add-class-or-pseudoclass-programmatical-to-custom-control-in-javafx und http: //stackoverflow.com/questions/36883838/implement-read-only-style-in-javafx/36886291#36886291 – Itai
Nein Ich entferne nicht die Klasse "Abbrechen", weil jede Zeile ausgewählt und nach dem Klicken in der Schaltfläche "Abbrechen" muss die Klasse css "abbrechen". Ich habe durch den Code "pseudoClassStateChanged (PseudoClass.getPseudoClass (" cancel "), true) ersetzen;", aber ich arbeite nicht ... – Benj
Ich bin mir nicht sicher, dass ich verstehe, dass Sie meinen, aber bedenken Sie, dass ' TableView' verwendet Zeilen erneut. Wenn Sie also eine Eigenschaft für das Zeilenobjekt festgelegt haben, müssen Sie sicherstellen, dass sie mit jedem 'updateItem' noch gültig ist - die gleiche Zeile kann jetzt für ein Element verwendet werden, das nicht abgebrochen wurde! Auch - was meinst du damit Pseudo-Klasse funktioniert nicht? Das gleiche Problem, oder nicht Stil überhaupt ändern? Denken Sie daran, Pseudo-Klassen müssen angegeben werden durch: (Doppelpunkt) in der CSS, nicht.(Periode), so sollte es ": Abbrechen" anstatt ".cancel" sein. – Itai