2017-04-06 6 views
0

Ich habe eine TableView mit einer CheckBoxTableCell Spalte.CheckBoxTableCell: Cursor beim Klicken ändern

Ich möchte die Auswahl der Zelle abfangen und den Cursor zu Cursor.WAIT ändern.

Wenn Sie auf die Zelle klicken, wird eine Datenbankabfrage ausgelöst, die einige Sekunden dauern kann. Ich möchte dem Benutzer mitteilen, dass etwas passiert und die Anwendung nicht einfach gestorben ist.

@FXML 
private TableColumn<IOrigin, Boolean> cActive; 

@Override 
public void initialize(final URL location, final ResourceBundle resources) { 
cActive.setCellFactory(tc -> new CheckBoxTableCell<>()); 
[..] 

} 

Zuhören auf CheckBoxTableCell#selectedProperty() nicht funktioniert, es Feuer keine Änderungsereignisse.

Die Spaltenzellen sind über fxml an eine Bean-Eigenschaft gebunden.

<TableColumn text="Active" editable="true" fx:id="cActive"> 
<cellValueFactory> 
<PropertyValueFactory property="active" /> 
/cellValueFactory> 
</TableColumn> 
+0

Was hat 'updateItem (...)' mit der Auswahl zu tun? –

+0

Nichts, aber dieses könnte ich überschreiben bzw. den Cursor vorher und nachher ändern. Aber wenn diese Methode aufgerufen wird, ist die gesamte Arbeit bereits erledigt. – kerner1000

+0

http://stackoverflow.com/questions/43274939/javafx-how-do-i-trigger-an-event-if-someone-check-a-checkbox-in-tableview – Sedrick

Antwort

0

With the cells show CheckBox in TableView:

  • Beachten Sie, dass die CheckBoxTableCell die CheckBox 'live' macht, was bedeutet, dass die CheckBox immer interaktiv und kann direkt vom Benutzer umgeschaltet werden.
  • Dies bedeutet, dass es nicht erforderlich ist, dass die Zelle in den Bearbeitungszustand wechselt (normalerweise durch Doppelklicken auf die Zelle durch den Benutzer).
  • Ein Nebeneffekt davon ist, dass die üblichen Editier-Callbacks (wie zum Beispiel beim Bearbeiten-Commit) nicht aufgerufen werden.
  • Wenn Sie über Änderungen benachrichtigt werden möchten, sollten Sie die booleschen Eigenschaften, die von der CheckBox manipuliert werden, direkt beobachten.
+0

Ich verstehe. Das Beobachten der "booleschen Eigenschaften, die manipuliert werden." Bedeutet das Beobachten des Modellobjekts für eine UI-Aufgabe. Das ist ein wenig stinkend und erfordert große Refactorings, so dass das Objekt "Szene" für das Modell verfügbar ist. – kerner1000